unbag
Version:
一个专门用来开发npm工具的包
125 lines (124 loc) • 5.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.read = void 0;
var _commander = require("commander");
var _index = require("../commands/transform/index.cjs");
var _index2 = require("../commands/parallel/index.cjs");
var _wait = require("../commands/parallel/wait.cjs");
var _config = require("./config.cjs");
var _index3 = require("../commands/release/index.cjs");
var _index4 = require("../commands/commit/index.cjs");
var _path = require("./path.cjs");
var _nodePath = _interopRequireDefault(require("node:path"));
var _lint = require("./../commands/commit/lint.cjs");
var _userConfig = require("./../core/user-config.cjs");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class CustomCliCommand extends _commander.Command {
addOptions(options) {
for (const option of options) {
this.addOption(option);
}
return this;
}
}
const getCommonOptions = () => {
const options = [new _commander.Option("-c,--config <string>", "\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84"), new _commander.Option("-r,--root <string>", "\u6839\u8DEF\u5F84"), new _commander.Option("-l,--local <string>", "\u672C\u5730\u5316\u8BED\u8A00")];
return options;
};
const resolveCliUserConfig = async options => {
const {
config,
root,
overrides,
locale
} = options;
const defaultConfig = (0, _config.useDefaultConfig)();
const absoluteRoot = new _path.AbsolutePath({
content: _nodePath.default.resolve(root || defaultConfig.root)
});
const userConfig = await (0, _config.resolveUserConfig)({
root: absoluteRoot,
filePath: config,
locale: locale || defaultConfig.locale
});
let mergedConfig = (0, _config.mergeDefaultConfig)(userConfig);
mergedConfig = (0, _config.mergeConfig)(mergedConfig, {
root: absoluteRoot.content
});
mergedConfig = (0, _config.mergeConfig)(mergedConfig, {
...overrides
});
const freezedConfig = (0, _config.deepFreezeConfig)(mergedConfig);
return freezedConfig;
};
const read = () => {
const program = new CustomCliCommand();
program.name("unbag").description("unbag CLI").version("0.8.0");
program.addCommand(new CustomCliCommand().name("transform").description("\u8F6C\u6362\u6587\u4EF6").addOptions(getCommonOptions()).option("-w,--watch", "\u542F\u7528\u89C2\u5BDF\u6A21\u5F0F").action(async options => {
const userConfig = await (0, _userConfig.resolveUserConfigFromCli)({
cliOptions: options,
overrides: {
transform: {
watch: options.watch
}
}
});
const cmd = new _index.TransformCommand(userConfig);
await cmd.run();
})).addCommand(new CustomCliCommand().name("commit").description("\u63D0\u4EA4\u6587\u4EF6").addOptions(getCommonOptions()).action(async options => {
const userConfig = await (0, _userConfig.resolveUserConfigFromCli)({
cliOptions: options
});
const cmd = new _index4.CommitCommand(userConfig);
await cmd.run();
}).addCommand(new CustomCliCommand().name("lint").description("\u6821\u9A8C\u63D0\u4EA4\u4FE1\u606F").addOptions(getCommonOptions()).option("-m,--message <string>", "\u4FE1\u606F").action(async options => {
const {
message
} = options;
const userConfig = await (0, _userConfig.resolveUserConfigFromCli)({
cliOptions: options
});
const cmd = new _lint.CommitLintCommand(userConfig);
await cmd.run(message);
}))).addCommand(new CustomCliCommand().name("release").description("release").addOptions(getCommonOptions()).option("-d,--dry", "\u542F\u7528\u8BD5\u8FD0\u884C\u6A21\u5F0F").action(async options => {
const userConfig = await (0, _userConfig.resolveUserConfigFromCli)({
cliOptions: options,
overrides: {
release: {
dry: options.dry
}
}
});
const cmd = new _index3.ReleaseCommand(userConfig);
await cmd.run();
})).addCommand(new CustomCliCommand().name("clean").action(() => {
console.log("clean");
}).addCommand(new CustomCliCommand().name("cleansss").action(() => {
console.log("cleansss");
}))).addCommand(new CustomCliCommand().name("parallel").description("\u8FD0\u884C\u591A\u4E2Anpm script").option("-c,--config <string>", "\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84").addOptions(getCommonOptions()).action(async options => {
const cliUserConfig = await resolveCliUserConfig(options);
const finalConfig = (0, _config.mergeConfig)(cliUserConfig, {});
await (0, _index2.parallel)(finalConfig);
})).addCommand(new CustomCliCommand().name(_wait.WaitCmdName).description("parallel\u547D\u4EE4\u5229\u7528\u6B64\u547D\u4EE4\u6765\u8FBE\u5230wait\u529F\u80FD").option("-n,--name <string>", "\u7B49\u5F85\u7684\u547D\u4EE4\u540D\u79F0").option("-f,--absoluteFilePath <string>", "\u8981\u8F6E\u8BE2\u68C0\u67E5\u7684\u6587\u4EF6\u7684\u7EDD\u5BF9\u8DEF\u5F84").option("-tg,--tag <string>", "\u7B49\u5F85\u7684\u51FD\u6570\u8FD0\u884C\u6807\u5FD7").option("-td,--tempDir <string>", "\u4E34\u65F6\u6587\u4EF6\u5939").option("-i,--interval <string>", "\u68C0\u6D4B\u95F4\u9694").option("-tm,--timeout <string>", "\u8D85\u65F6\u65F6\u95F4").action(async options => {
const {
name = "",
absoluteFilePath = ""
} = options;
let checkResult = void 0;
if (absoluteFilePath && name) {
checkResult = await (0, _wait.checkWaitFile)({
name,
absoluteFilePath
});
}
if (checkResult?.content.result) {
process.exit(0);
} else {
process.exit(1);
}
}));
program.parse();
};
exports.read = read;