wren-8080
Version:
An Intel 8080 disassembler
40 lines (30 loc) • 1.28 kB
JavaScript
const util = require('util');
const fs = require('fs');
const dedupe = require('dedupe');
const jsonexport = require('jsonexport');
const program = require('commander');
const toCsv = util.promisify(jsonexport);
const writeFile = util.promisify(fs.writeFile);
const { disassembleFile } = require('../src/disassembler');
const { toPlainText } = require('../src/parser');
program
.usage('[path] [options]')
.option('-d, --dedupe', 'Does not output duplicate instructions')
.option('-c, --csv <outputPath>', 'Save the results to a csv file')
.option('-t, --txt <outputPath>', 'Save the results to a text file');
const main = async (path) => {
const instructions = await disassembleFile(path);
await output(program.dedupe ? dedupe(instructions) : instructions);
console.log('Done!'); // eslint-disable-line no-console
};
const output = async (instructions) => {
if (program.csv) {
return writeFile(program.csv, (await toCsv(instructions)));
} else if (program.txt) {
return writeFile(program.txt, (await toPlainText(instructions, program.dedupe)));
}
console.log(toPlainText(instructions, program.dedupe)); // eslint-disable-line no-console
};
program.action(main);
program.parse(process.argv);