UNPKG

@fink/cli

Version:

CLI for compiling fink to JS

122 lines (114 loc) 3.11 kB
#!/usr/bin/env node import { process } from "@fink/js-interop/globals.js"; import { is_empty, fold } from "@fink/std-lib/iter.js"; import yargs from "yargs"; import { compile_all } from "./compile.js"; import { logger } from "./logging.js"; const { warn, error } = logger(); export const error_exit_code = -1; export const handle_compile = (process, argv) => { const compilation = compile_all(process, argv.src, argv[`out-dir`], argv.ignore, { source_maps: argv[`source-maps`], module_type: argv[`module-type`], module_ext: argv[`module-ext`] }); let _do_result; { let ˆpipe_result_1 = compilation; _do_result = ˆpipe_result_1 = fold({ processed: 0, errors: 0 }, (item, { processed, errors }) => { const ˆvalue_2 = item; if (ˆvalue_2 != null) { const { errors: ˆp_4 } = ˆvalue_2; if (is_empty(ˆp_4)) { return { processed: processed + 1, errors }; } } { { const { errors: [{ error: err, stack }] } = item; error(err, stack); return { processed: processed + 1, errors: errors + 1 }; } } })(ˆpipe_result_1); } const { processed, errors } = _do_result; _do_result = undefined; warn(`\nprocessed ${processed} file(s)`); { const ˆvalue_5 = errors; if (ˆvalue_5 > 0) { return process.exit(error_exit_code); } } }; export const main = process => { const [,, ...args] = process.argv; let _do_result2; { let ˆpipe_result_7 = yargs(args); ˆpipe_result_7 = ˆpipe_result_7.parserConfiguration({ [`camel-case-expansion`]: false }); ˆpipe_result_7 = ˆpipe_result_7.version(false); ˆpipe_result_7 = ˆpipe_result_7.usage(`$0 --src file-or-dir [...] [--out-dir ouput-dir]`); ˆpipe_result_7 = ˆpipe_result_7.option(`src`, { array: true, describe: `The directory containing files to compile.` }); ˆpipe_result_7 = ˆpipe_result_7.option(`out-dir`, { describe: `The directory to generate code in.`, "default": false }); ˆpipe_result_7 = ˆpipe_result_7.option(`ignore`, { describe: `Glob paths/patterns for files to ignore`, "default": false }); ˆpipe_result_7 = ˆpipe_result_7.option(`source-maps`, { describe: `Generate sourcemaps`, "default": false }); ˆpipe_result_7 = ˆpipe_result_7.option(`module-type`, { describe: `Type of modules to generate (cjs|esm)`, choices: [`cjs`, `esm`], "default": `esm` }); ˆpipe_result_7 = ˆpipe_result_7.option(`module-ext`, { describe: `Extension to use for output files.`, "default": `.js` }); _do_result2 = ˆpipe_result_7 = ˆpipe_result_7.help(); } const { argv } = _do_result2; _do_result2 = undefined; return handle_compile(process, argv); }; // TODO: loxia should handle auto running main functions main(process);