Spaces:
Running
Running
const fs = require('fs'); | |
const VirtualMachine = require('../index'); | |
/* eslint-env node */ | |
/* eslint-disable no-console */ | |
const file = process.argv[2]; | |
if (!file) { | |
throw new Error('Invalid file'); | |
} | |
const runProject = async buffer => { | |
const vm = new VirtualMachine(); | |
vm.runtime.on('SAY', (target, type, text) => { | |
console.log(text); | |
}); | |
vm.setCompatibilityMode(true); | |
vm.clear(); | |
await vm.loadProject(buffer); | |
vm.start(); | |
vm.greenFlag(); | |
await new Promise(resolve => { | |
const interval = setInterval(() => { | |
let active = 0; | |
const threads = vm.runtime.threads; | |
for (let i = 0; i < threads.length; i++) { | |
if (!threads[i].updateMonitor) { | |
active += 1; | |
} | |
} | |
if (active === 0) { | |
clearInterval(interval); | |
resolve(); | |
} | |
}, 50); | |
}); | |
vm.stopAll(); | |
vm.stop(); | |
}; | |
runProject(fs.readFileSync(file)); | |