functionalscript
Version:
FunctionalScript is a purely functional subset of JavaScript
32 lines (31 loc) • 1.17 kB
JavaScript
import { transpile } from "./transpiler/module.f.js";
import { stringify, stringifyAsTree } from "./serializer/module.f.js";
import { sort } from "../types/object/module.f.js";
export const compile = ({ console: { error }, fs, process: { argv } }) => {
const args = argv.slice(2);
if (args.length < 2) {
error('Error: Requires 2 or more arguments');
return Promise.resolve(1);
}
const inputFileName = args[0];
const outputFileName = args[1];
const result = transpile(fs)(inputFileName);
switch (result[0]) {
case 'ok': {
if (outputFileName.endsWith('.json')) {
const output = stringifyAsTree(sort)(result[1]);
fs.writeFileSync(outputFileName, output);
break;
}
const output = stringify(sort)(result[1]);
fs.writeFileSync(outputFileName, output);
break;
}
case 'error': {
const metadata = result[1].metadata;
error(`${metadata?.path}:${metadata?.line}:${metadata?.column} - error: ${result[1].message}`);
break;
}
}
return Promise.resolve(0);
};