64 lines
1.3 KiB
JavaScript
64 lines
1.3 KiB
JavaScript
var Module = {};
|
|
var verbose_mode = false;
|
|
var text_buffer = "";
|
|
|
|
Module["printErr"] = Module["print"] = function(text) {
|
|
if (verbose_mode)
|
|
console.log(text);
|
|
text_buffer += text + "\n";
|
|
}
|
|
|
|
importScripts('yosys.js');
|
|
|
|
onmessage = function(e) {
|
|
var request = e.data[0];
|
|
var response = { "idx": request.idx, "args": [] };
|
|
|
|
if (request.mode == "run") {
|
|
response["errmsg"] = "";
|
|
try {
|
|
text_buffer = "";
|
|
Module.ccall('run', '', ['string'], [request.cmd]);
|
|
} catch (e) {
|
|
response.errmsg = Module.ccall('errmsg', 'string', [], []);
|
|
}
|
|
response.args.push(text_buffer);
|
|
response.args.push(response.errmsg);
|
|
text_buffer = "";
|
|
}
|
|
|
|
if (request.mode == "read_file") {
|
|
try {
|
|
response.args.push(FS.readFile(request.filename, {encoding: 'utf8'}));
|
|
} catch (e) { }
|
|
}
|
|
|
|
if (request.mode == "write_file") {
|
|
try {
|
|
FS.writeFile(request.filename, request.text, {encoding: 'utf8'});
|
|
} catch (e) { }
|
|
}
|
|
|
|
if (request.mode == "read_dir") {
|
|
try {
|
|
response.args.push(FS.readdir(request.dirname));
|
|
} catch (e) { }
|
|
}
|
|
|
|
if (request.mode == "remove_file") {
|
|
try {
|
|
FS.unlink(request.filename);
|
|
} catch (e) { }
|
|
}
|
|
|
|
if (request.mode == "verbose") {
|
|
if (request.value)
|
|
console.log(text_buffer);
|
|
verbose_mode = request.value;
|
|
}
|
|
|
|
postMessage([response]);
|
|
}
|
|
|
|
postMessage([{ "idx": 0, "args": [] }]);
|