mkjs-cli
Version:
Make-inspired build tool
55 lines (43 loc) • 1.21 kB
JavaScript
const fs = require('fs');
const path = require('path');
const compiler = require('../language/compiler');
const main = module.exports = {
load(p_file) {
let s_input = fs.readFileSync(p_file, 'utf8');
let h_result = compiler({
input: s_input,
cwd: path.dirname(path.resolve(p_file)),
});
return h_result;
},
compile(h_compile) {
return compiler(h_compile);
},
};
if(module === require.main) {
let h_cli = require('commander')
.version(require('../../package.json').version, '-v, --version')
.usage('[options] <file>')
.option('-g, --config', 'pass a JSON-like JavaScript object to insert global vars at the top')
// .arguments('file')
.parse(process.argv);
if(!h_cli.args.length) {
h_cli.help();
}
let p_input = path.join(process.cwd(), h_cli.args[0]);
let s_prepend = '';
if(h_cli.config) {
debugger;
let h_vars = eval(h_cli.config);
for(let s_var in h_vars) {
s_prepend += `@.const ${s_var} = ${JSON.stringify(h_vars[s_var])};\n`;
}
}
let g_result = main.load(p_input, s_prepend);
if(g_result.error) {
console.error(g_result.error.message+'\n'+g_result.error.stack);
process.exit(1);
}
console.log(g_result.output);
}