beesbuild
Version:
构建工具链
54 lines (53 loc) • 2.55 kB
JavaScript
import { consola } from "@beesbuild/utils";
import { merge } from "lodash-unified";
import { Command } from "commander";
import glob from "fast-glob";
import { booleanParser } from "../boolean-parser.mjs";
const WORKSPACE_DIR = "pnpm-workspace.yaml";
const handleOptions = (program, options) => {
var _a;
const opts = merge({}, program.opts(), options);
opts.json = booleanParser(opts.json);
opts.debug = booleanParser(opts.debug);
opts.syncVersion = booleanParser(opts.syncVersion);
opts.verbose = booleanParser(opts.verbose);
opts.debug && consola.info(opts);
opts.monorepo = booleanParser(opts.monorepo);
opts.clean = booleanParser(opts.clean);
if (!opts.monorepo) {
const workspaces = glob.sync([(_a = opts.workspaceDir) != null ? _a : WORKSPACE_DIR], {
deep: 1,
onlyFiles: true,
absolute: false
});
opts.monorepo = workspaces.length > 0;
}
return opts;
};
const init = (options, program) => {
if (!(program instanceof Command)) {
program = new Command();
}
program.name(options.name).summary("make a copy").addHelpText("before", `Version ${options.version}`).usage("[global options] [command]").usage("[ -h | --help | -v | --version ]").description("CLI to some JavaScript string utilities").version(options.version);
program.option(
"-F, --filter <package_selector>",
"\u8FC7\u6EE4\u5141\u8BB8\u60A8\u5C06\u547D\u4EE4\u9650\u5236\u4E3A\u7279\u5B9A\u7684\u5305\u5B50\u96C6\u3002",
"./packages/**"
).option("-M, --monorepo", "\u591A\u4E2A\u5305\u7684\u652F\u6301").option("-C, --no-clean", "\u662F\u5426\u5220\u9664\u6253\u5305\u6587\u4EF6\u6216\u6587\u4EF6\u5939").option("-v, --verbose", "\u8BE6\u7EC6\u663E\u793A\u8FDB\u884C\u7684\u6B65\u9AA4").option("--no-sync-version <sync-version>", "\u540C\u6B65\u672C\u5730\u4E0ENPM\u7684\u5305\u7248\u672C\u4FE1\u606F").option(
"--changed-files-ignore-pattern <glob>",
"\u5141\u8BB8\u5728\u8FC7\u6EE4\u81EA\u6307\u5B9A\u63D0\u4EA4/\u5206\u652F\u4EE5\u6765\u66F4\u6539\u7684\u9879\u76EE\u65F6\u6309 glob \u6A21\u5F0F\u5FFD\u7565\u66F4\u6539\u7684\u6587\u4EF6\u3002"
).option("--root-dir <rootDir>", "\u9879\u76EE\u6839\u76EE\u5F55", process.cwd()).option("--workspace-dir <workspaceDir>", "pnpm-workspace \u6587\u4EF6\u8DEF\u5F84", WORKSPACE_DIR).option("--debug", "\u8C03\u8BD5\u6A21\u5F0F");
const inst = {
next: (func) => {
typeof func === "function" && func(program);
return inst;
},
end: () => program
};
return inst;
};
export {
WORKSPACE_DIR,
handleOptions,
init
};