@fink/cli
Version:
CLI for compiling fink to JS
122 lines (114 loc) • 3.11 kB
JavaScript
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);