import type { Item } from '../fs/Item' import type { SimpleStream } from '../utils/SimpleStream' import { Program } from './Program' export class Eval extends Program { async Exec(stdin: SimpleStream, stdout: SimpleStream, _workdir: Item, args: string[]): Promise { const inlineArgs = args.slice(1) const source = inlineArgs.length > 0 ? inlineArgs.join(' ') : await stdin.wait() if (source.trim().length === 0) { stdout.emit('eval: error: missing javascript input\n') return 1 } try { this.RunJs(source, stdout) } catch { return 1 } return 0 } private RunJs(javascript: string, stdout: SimpleStream) { try { // todo: pass workdir to the program eval(javascript) } catch (e) { stdout.emit(`${String(e)}\n`) throw e } } }