runtime-shell
Version:
Some useful shell commands for runtime.js
42 lines (37 loc) • 1.02 kB
JavaScript
;
const shellUtil = require('../util');
const evalScope = require('../lib/eval-scope');
module.exports = (runtime) => {
runtime.shell.setCommand('eval', (args, env, cb) => {
const evalCode = (text) => {
try {
const result = evalScope(text);
if (result !== undefined) {
env.stdio.writeLine(result);
} else {
env.stdio.writeLine('');
}
return true;
} catch(e) {
env.stdio.writeError(e);
env.stdio.write('\n');
return false;
}
}
const argv = shellUtil.parse(args);
if (argv.length > 0) {
console.log('hi');
cb(evalCode(argv.join(' ')) ? 0 : 1);
} else {
let last_res;
env.stdio.write('> ');
const processText = (text) => {
if (text == ".exit") return cb(last_res ? 0 : 1);
last_res = evalCode(text);
env.stdio.write('> ');
env.stdio.readLine(processText);
}
env.stdio.readLine(processText);
}
});
};