@tikkhun/cli-core 0.0.25 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CommandManager.js +1 -1
- package/dist/CommandManager.js.map +1 -1
- package/dist/CommandManager.mjs +1 -1
- package/dist/CommandManager.mjs.map +1 -1
- package/dist/command/ArgsCommand.js +2 -2
- package/dist/command/ArgsCommand.js.map +1 -1
- package/dist/command/ArgsCommand.mjs +2 -2
- package/dist/command/ArgsCommand.mjs.map +1 -1
- package/dist/command/PromptsCommand.js +1 -1
- package/dist/command/PromptsCommand.js.map +1 -1
- package/dist/command/PromptsCommand.mjs +1 -1
- package/dist/command/PromptsCommand.mjs.map +1 -1
- package/dist/command/index.js +1 -1
- package/dist/command/index.js.map +1 -1
- package/dist/command/index.mjs +1 -1
- package/dist/command/index.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/CommandManager.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
'use strict';var D=require('lodash'),utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),commander=require('commander'),prompts=require('@inquirer/prompts'),logger=require('@tikkhun/logger'),q=require('fs-extra'),path=require('path'),configLoader=require('@tikkhun/config-loader');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var D__default=/*#__PURE__*/_interopDefault(D);var q__default=/*#__PURE__*/_interopDefault(q);/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var S=Object.defineProperty,j=Object.defineProperties;var R=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var v=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var x=(s,t,o)=>t in s?S(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,c=(s,t)=>{for(var o in t||(t={}))v.call(t,o)&&x(s,o,t[o]);if(l)for(var o of l(t))L.call(t,o)&&x(s,o,t[o]);return s},g=(s,t)=>j(s,R(t));var f=(s,t)=>{var o={};for(var i in s)v.call(s,i)&&t.indexOf(i)<0&&(o[i]=s[i]);if(s!=null&&l)for(var i of l(s))t.indexOf(i)<0&&L.call(s,i)&&(o[i]=s[i]);return o};var a=(s,t,o)=>new Promise((i,n)=>{var r=p=>{try{A(o.next(p));}catch(T){n(T);}},m=p=>{try{A(o.throw(p));}catch(T){n(T);}},A=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,m);A((o=o.apply(s,t)).next());});var{merge:H}=D__default.default,h=class h{constructor(t){this.options=H({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var{get:$}=D__default.default,u=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:r})=>({key:n,value:r,type:i[n]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,$(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(i,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:i[r],title:n[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:r,title:m}of t)r&&m&&(o[i]=(yield this.getActionResult({type:r,message:m,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,{type:o}=n,i=f(n,["type"]);return yield prompts.input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(i,this.options.optionTypes);t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:wt,writeJson:z}=q__default.default,d=class d extends e{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=d.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield z(n,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",d.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n=yield configLoader.loadConfig(o);if(!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};d.defaultConfigPath=path.join(process.cwd(),"release.json");var y=d;var k=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(k||{}),C=class C{constructor(t){this.options=utilsCore.mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=f(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=commander.createCommand(),t.includes("args")&&(this.argsCommand=new u(g(c({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new y(g(c({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(g(c({},o),{program:this.program}))));}start(t){var o,i,n,r;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(r=this.program)==null||r.parse(process.argv);}};C.DEFAULT_OPTIONS=g(c({},e.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var w=C,$t=w;exports.Cli=$t;exports.CommandManager=w;exports.CommandTypes=k;//# sourceMappingURL=CommandManager.js.map
|
4
|
+
var S=Object.defineProperty,j=Object.defineProperties;var R=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var v=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var x=(s,t,o)=>t in s?S(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,c=(s,t)=>{for(var o in t||(t={}))v.call(t,o)&&x(s,o,t[o]);if(l)for(var o of l(t))L.call(t,o)&&x(s,o,t[o]);return s},g=(s,t)=>j(s,R(t));var f=(s,t)=>{var o={};for(var i in s)v.call(s,i)&&t.indexOf(i)<0&&(o[i]=s[i]);if(s!=null&&l)for(var i of l(s))t.indexOf(i)<0&&L.call(s,i)&&(o[i]=s[i]);return o};var a=(s,t,o)=>new Promise((i,n)=>{var r=p=>{try{A(o.next(p));}catch(T){n(T);}},m=p=>{try{A(o.throw(p));}catch(T){n(T);}},A=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,m);A((o=o.apply(s,t)).next());});var{merge:H}=D__default.default,h=class h{constructor(t){this.options=H({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var{get:$}=D__default.default,u=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:r})=>({key:n,value:r,type:i[n]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,$(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(i,{schema:this.options.optionTypes});t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:i[r],title:n[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:r,title:m}of t)r&&m&&(o[i]=(yield this.getActionResult({type:r,message:m,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,{type:o}=n,i=f(n,["type"]);return yield prompts.input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(i,{schema:this.options.optionTypes});t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:wt,writeJson:z}=q__default.default,d=class d extends e{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=d.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield z(n,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",d.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n=yield configLoader.loadConfig(o);if(!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};d.defaultConfigPath=path.join(process.cwd(),"release.json");var y=d;var k=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(k||{}),C=class C{constructor(t){this.options=utilsCore.mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=f(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=commander.createCommand(),t.includes("args")&&(this.argsCommand=new u(g(c({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new y(g(c({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(g(c({},o),{program:this.program}))));}start(t){var o,i,n,r;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(r=this.program)==null||r.parse(process.argv);}};C.DEFAULT_OPTIONS=g(c({},e.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var w=C,$t=w;exports.Cli=$t;exports.CommandManager=w;exports.CommandTypes=k;//# sourceMappingURL=CommandManager.js.map
|
5
5
|
//# sourceMappingURL=CommandManager.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts","../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli"],"mappings":"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","file":"CommandManager.js","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions);\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli"],"mappings":"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","file":"CommandManager.js","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n"]}
|
package/dist/CommandManager.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import D from'lodash';import {mergeOptions,nestedObjectToList,flatNestedObject,unflatNestedObject}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import {createCommand}from'commander';import {input}from'@inquirer/prompts';import {Logger}from'@tikkhun/logger';import q from'fs-extra';import {join}from'path';import {loadConfig}from'@tikkhun/config-loader';/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var S=Object.defineProperty,j=Object.defineProperties;var R=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var v=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var x=(s,t,o)=>t in s?S(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,c=(s,t)=>{for(var o in t||(t={}))v.call(t,o)&&x(s,o,t[o]);if(l)for(var o of l(t))L.call(t,o)&&x(s,o,t[o]);return s},g=(s,t)=>j(s,R(t));var f=(s,t)=>{var o={};for(var i in s)v.call(s,i)&&t.indexOf(i)<0&&(o[i]=s[i]);if(s!=null&&l)for(var i of l(s))t.indexOf(i)<0&&L.call(s,i)&&(o[i]=s[i]);return o};var a=(s,t,o)=>new Promise((i,n)=>{var r=p=>{try{A(o.next(p));}catch(T){n(T);}},m=p=>{try{A(o.throw(p));}catch(T){n(T);}},A=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,m);A((o=o.apply(s,t)).next());});var{merge:H}=D,h=class h{constructor(t){this.options=H({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var{get:$}=D,u=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:r})=>({key:n,value:r,type:i[n]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,$(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:i[r],title:n[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:r,title:m}of t)r&&m&&(o[i]=(yield this.getActionResult({type:r,message:m,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,{type:o}=n,i=f(n,["type"]);return yield input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,this.options.optionTypes);t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:wt,writeJson:z}=q,d=class d extends e{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=d.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield z(n,this.options.defaultOptions,{spaces:2}),Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",d.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n=yield loadConfig(o);if(!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};d.defaultConfigPath=join(process.cwd(),"release.json");var y=d;var k=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(k||{}),C=class C{constructor(t){this.options=mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=f(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=createCommand(),t.includes("args")&&(this.argsCommand=new u(g(c({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new y(g(c({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(g(c({},o),{program:this.program}))));}start(t){var o,i,n,r;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(r=this.program)==null||r.parse(process.argv);}};C.DEFAULT_OPTIONS=g(c({},e.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var w=C,$t=w;export{$t as Cli,w as CommandManager,k as CommandTypes};//# sourceMappingURL=CommandManager.mjs.map
|
4
|
+
var S=Object.defineProperty,j=Object.defineProperties;var R=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var v=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var x=(s,t,o)=>t in s?S(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,c=(s,t)=>{for(var o in t||(t={}))v.call(t,o)&&x(s,o,t[o]);if(l)for(var o of l(t))L.call(t,o)&&x(s,o,t[o]);return s},g=(s,t)=>j(s,R(t));var f=(s,t)=>{var o={};for(var i in s)v.call(s,i)&&t.indexOf(i)<0&&(o[i]=s[i]);if(s!=null&&l)for(var i of l(s))t.indexOf(i)<0&&L.call(s,i)&&(o[i]=s[i]);return o};var a=(s,t,o)=>new Promise((i,n)=>{var r=p=>{try{A(o.next(p));}catch(T){n(T);}},m=p=>{try{A(o.throw(p));}catch(T){n(T);}},A=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,m);A((o=o.apply(s,t)).next());});var{merge:H}=D,h=class h{constructor(t){this.options=H({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var{get:$}=D,u=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:r})=>({key:n,value:r,type:i[n]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,$(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,{schema:this.options.optionTypes});t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:i[r],title:n[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:r,title:m}of t)r&&m&&(o[i]=(yield this.getActionResult({type:r,message:m,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,{type:o}=n,i=f(n,["type"]);return yield input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,{schema:this.options.optionTypes});t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:wt,writeJson:z}=q,d=class d extends e{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=d.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield z(n,this.options.defaultOptions,{spaces:2}),Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",d.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n=yield loadConfig(o);if(!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};d.defaultConfigPath=join(process.cwd(),"release.json");var y=d;var k=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(k||{}),C=class C{constructor(t){this.options=mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=f(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=createCommand(),t.includes("args")&&(this.argsCommand=new u(g(c({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new y(g(c({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(g(c({},o),{program:this.program}))));}start(t){var o,i,n,r;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(r=this.program)==null||r.parse(process.argv);}};C.DEFAULT_OPTIONS=g(c({},e.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var w=C,$t=w;export{$t as Cli,w as CommandManager,k as CommandTypes};//# sourceMappingURL=CommandManager.mjs.map
|
5
5
|
//# sourceMappingURL=CommandManager.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts","../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli"],"mappings":";;;uyBAEA,GAAM,CAAE,KAAA,CAAAA,CAAM,CAAIC,CAAAA,CAAAA,CAuBIC,CAAf,CAAA,MAAeA,CAAgB,CAapC,YAAYC,CAAmC,CAAA,CAE7C,IAAK,CAAA,OAAA,CAAUH,CAAM,CAAA,GAAIE,CAAgB,CAAA,eAAA,CAAiBC,CAAO,CAAA,CACjE,IAAK,CAAA,IAAA,GACP,CAGF,CAAA,CApBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAA,CAAS,OACT,OAAS,CAAA,EAAA,CACT,WAAa,CAAA,EAAA,CACb,IAAM,CAAA,MAAA,CACN,eAAgB,EAAC,CACjB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EAAC,CACd,YAAc,CAAA,EAChB,CAAA,CAVK,IAAeE,CAAAA,CAAfF,ECpBP,GAAM,CAAE,GAAA,CAAAG,CAAI,CAAA,CAAIJ,CAMHK,CAAAA,CAAAA,CAAN,cAA0BF,CAAgB,CAE/C,UAA2B,EAAA,CACzB,IAAMG,CAAAA,CAAgBC,UAAW,CAAA,SAAA,CAAU,KAAK,OAAQ,CAAA,cAAc,CAChEC,CAAAA,CAAAA,CAAaC,kBAAmB,CAAA,CAAE,UAAW,GAAK,CAAA,IAAA,CAAMH,CAAc,CAAC,CAEvEI,CAAAA,CAAAA,CAAgBC,gBAAiB,CAAA,CAAE,SAAW,CAAA,GAAA,CAAK,IAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,WAAY,CAAC,CACzF,CAAA,OAAOH,CACJ,CAAA,MAAA,CAAO,CAAC,CAAE,IAAAI,CAAI,CAAA,GAET,CAAK,IAAA,CAAA,OAAA,CAAQ,cAAe,CAAA,QAAA,CAASA,CAAG,CAI7C,CAAA,CACA,GAAI,CAAA,CAAC,CAAE,GAAA,CAAAA,CAAK,CAAA,KAAA,CAAAC,CAAM,CAAA,IACV,CAAE,GAAA,CAAAD,CAAK,CAAA,KAAA,CAAAC,EAAO,IAAMH,CAAAA,CAAAA,CAAcE,CAAG,CAAE,CAC/C,CAAA,CACL,CACA,IAAa,EAAA,CACX,IAAK,CAAA,OAAA,CAAU,IAAK,CAAA,OAAA,CAAQ,SAAWE,aAAc,EAAA,CACrD,IAAMZ,CAAAA,CAAU,IAAK,CAAA,UAAA,EACrB,CAAA,IAAA,CAAK,UAAWA,CAAAA,CAAO,EACzB,CACQ,UAAWA,CAAAA,CAAAA,CAAuB,CACxCA,CAAQ,CAAA,OAAA,CAAQ,CAAC,CAAE,GAAAU,CAAAA,CAAAA,CAAK,MAAAC,CAAO,CAAA,IAAA,CAAAE,CAAK,CAAA,GAAM,CACxC,IAAA,CAAK,QAAS,MAAO,CAAA,CAAA,EAAA,EAAKH,CAAG,CAAA,EAAA,EAAKG,CAAI,CAAA,CAAA,CAAA,CAAKX,CAAI,CAAA,IAAA,CAAK,OAAQ,CAAA,YAAA,CAAcQ,CAAG,CAAA,CAAGC,CAAK,EACvF,CAAC,EACH,CACQ,SAAUG,CAAAA,CAAAA,CAAgB,CAChC,IAAA,CAAK,QAAS,MAAQV,CAAAA,CAAAA,EAAkB,CAEtC,IAAMJ,CAAUe,CAAAA,kBAAAA,CAAmB,CACjC,SAAW,CAAA,GAAA,CACX,IAAMX,CAAAA,CACR,CAAC,CAAA,CACKY,CAAeX,CAAAA,UAAAA,CAAW,KAAML,CAAAA,CAAAA,CAAS,IAAK,CAAA,OAAA,CAAQ,WAAW,CAAA,CACvEc,EAAOE,CAAY,EACrB,CAAC,EACH,CACA,KAAA,CAAMF,EAAgB,CACpB,IAAA,CAAK,SAAUA,CAAAA,CAAM,CAEhB,CAAA,IAAA,CAAK,QAAQ,OAChB,EAAA,IAAA,CAAK,OAAS,CAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,EAEpC,CACF,CAAA,CCjCO,IAAMG,CAAAA,CAAN,cAA6BhB,CAAgB,CAGlD,UAAa,EAAA,CACX,IAAMiB,CAAAA,CAA0Bb,UAAW,CAAA,SAAA,CAAU,IAAK,CAAA,OAAA,CAAQ,cAAc,CAAA,CAE1Ec,CAAoCZ,CAAAA,kBAAAA,CAAmB,CAC3D,SAAW,CAAA,GAAA,CACX,IAAMW,CAAAA,CACR,CAAC,CAAA,CACKE,EAAwBX,gBAAiB,CAAA,CAC7C,SAAW,CAAA,GAAA,CACX,IAAM,CAAA,IAAA,CAAK,QAAQ,WACrB,CAAC,CACKY,CAAAA,CAAAA,CAAyBZ,gBAAiB,CAAA,CAC9C,SAAW,CAAA,GAAA,CACX,IAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,YACrB,CAAC,CAAA,CACD,OAAOU,CAAkC,CAAA,GAAA,CAAI,CAAC,CAAE,GAAAT,CAAAA,CAAAA,CAAK,MAAAC,CAAM,CAAA,IAClD,CACL,GAAA,CAAKD,CACL,CAAA,YAAA,CAAcC,EACd,IAAMS,CAAAA,CAAAA,CAAsBV,CAAG,CAAA,CAC/B,KAAOW,CAAAA,CAAAA,CAAuBX,CAAG,CACnC,CACD,CAAA,CACH,CACA,IAAA,EAAO,CACL,IAAMV,EAAU,IAAK,CAAA,UAAA,EAGrB,CAAA,IAAA,CAAK,aAAgB,CAAA,IAAYsB,EAAA,IAC/B,CAAA,IAAA,CAAA,WAAA,CAAA,IAAMC,CAA8B,CAAA,EACpC,CAAA,IAAA,GAAW,CAAE,GAAAb,CAAAA,CAAAA,CAAK,YAAAc,CAAAA,CAAAA,CAAc,IAAAX,CAAAA,CAAAA,CAAM,KAAAY,CAAAA,CAAM,CAAKzB,GAAAA,CAAAA,CAC1Ca,CAGAY,EAAAA,CAAAA,GAGLF,CAAOb,CAAAA,CAAG,GAAK,MAAM,IAAA,CAAK,eAAgB,CAAA,CAAE,IAAAG,CAAAA,CAAAA,CAAM,QAASY,CAAO,CAAA,OAAA,CAASD,CAAa,CAAC,CAAMA,GAAAA,CAAAA,CAAAA,CAEjG,OAAOD,CACT,CAAA,CAAA,CAEI,IAAK,CAAA,OAAA,CAAQ,OACf,GAAA,IAAA,CAAK,OAAU,CAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,CAAQ,OAAQ,CAAA,SAAS,CAEzD,EAAA,CACc,gBAAgBvB,CAAiC,CAAA,CAAA,OAAAsB,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC7D,IAA0BI,CAAAA,CAAA1B,EAAlB,CAAAa,IAAAA,CAAAA,CA3EZ,CA2E8Ba,CAAAA,CAAAA,CAATC,CAAAC,CAAAA,CAAAA,CAASF,EAAT,CAAT,MAAA,CAAA,CAAA,CACR,OAAO,MAAMG,KAAMF,CAAAA,CAAI,CACzB,CAAA,CAAA,CACc,aAAcb,CAAAA,CAAAA,CAAgB,CAAAQ,OAAAA,CAAAA,CAAA,IAC1C,CAAA,IAAA,CAAA,WAAA,CAAA,IAAMtB,EAAU,MAAM,IAAA,CAAK,aAAc,EAAA,CACnC8B,CAAmBf,CAAAA,kBAAAA,CAAmB,CAAE,SAAW,CAAA,GAAA,CAAK,IAAMf,CAAAA,CAAQ,CAAC,CAAA,CACvE+B,EAAe1B,UAAW,CAAA,KAAA,CAAMyB,CAAkB,CAAA,IAAA,CAAK,OAAQ,CAAA,WAAW,CAChFhB,CAAAA,CAAAA,CAAOiB,CAAY,EACrB,CACM,CAAA,CAAA,KAAA,CAAMjB,CAAgB,CAAA,CAAA,OAAAQ,EAAA,IAC1B,CAAA,IAAA,CAAA,WAAA,CAAA,GAAI,IAAK,CAAA,OAAA,CAAS,CAChB,IAAA,CAAK,QAAQ,MAAO,CAAA,IAAM,IAAK,CAAA,aAAA,CAAcR,CAAM,CAAC,EACpD,MACF,CACA,IAAK,CAAA,aAAA,CAAcA,CAAM,EAC3B,GACF,CCxFA,CCDA,GAAM,CAAE,QAAA,CAAAkB,EAAU,CAAA,SAAA,CAAAC,CAAU,CAAA,CAAIC,CAKnBC,CAAAA,CAAAA,CAAN,MAAMA,CAAAA,SAAsBlC,CAAgB,CAGjD,IAAA,EAAa,CAVf,IAAAyB,CAAAU,CAAAA,CAAAA,CAYI,KAAK,OAAUV,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,OAAA,CAAQ,OAAb,GAAA,IAAA,CAAA,MAAA,CAAAA,EAAsB,OAAQ,CAAA,QAAA,CAAA,GAAad,aAAc,EAAA,CAAA,CAExEwB,CAAA,CAAA,IAAA,CAAK,OAAL,GAAA,IAAA,EAAAA,CACI,CAAA,OAAA,CAAQ,MACT,CAAA,CAAA,MAAA,CAAO,oBAAsB,CAAA,sCAAA,CAAUD,EAAc,iBACrD,CAAA,CAAA,MAAA,CAAcnC,CAAYsB,EAAAA,CAAAA,CAAA,IACzB,CAAA,IAAA,CAAA,WAAA,CAAA,GAAI,CAAE,IAAAe,CAAAA,CAAK,CAAIrC,CAAAA,CAAAA,CACVqC,CACHA,GAAAA,CAAAA,CAAOF,EAAc,iBAEvBG,CAAAA,CAAAA,MAAAA,CAAO,GAAI,CAAA,kEAAA,CAAmBD,CAAI,CAAA,CAClC,MAAMJ,CAAAA,CAAUI,CAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,cAAA,CAAgB,CAAE,MAAA,CAAQ,CAAE,CAAC,CAAA,CAChEC,MAAO,CAAA,GAAA,CAAI,kEAAmBD,CAAAA,CAAI,EACpC,CACF,CAAA,CAAA,CAAA,IAAA,CAAK,UAAW,GAClB,CACQ,UAAA,EAAa,CA5BvB,IAAAX,CAAAA,CAAAA,CA6BIA,CAAA,CAAA,IAAA,CAAK,OAAL,GAAA,IAAA,EAAAA,CAAc,CAAA,MAAA,CAAO,sBAAwB,CAAA,0BAAA,CAAQS,CAAc,CAAA,iBAAA,EACrE,CACQ,SAAA,CAAUrB,EAAgB,CAChC,IAAA,CAAK,OAAS,CAAA,MAAA,CAAcyB,CAAoBjB,EAAAA,CAAAA,CAAA,MAApBiB,CAAoB,CAAA,CAAA,UAApB,CAAE,MAAA,CAAAC,CAAS,CAAA,EAAG,EAAM,CAC9C,IAAIxC,CAAU,CAAA,MAAMyC,UAAWD,CAAAA,CAAM,CAErC,CAAA,GAAI,CAACxC,CAAAA,CACH,MAAM,IAAI,KAAM,CAAA,CAAA,4DAAA,EAAawC,CAAM,CAAE,CAAA,CAAA,CAGvC1B,CAAOd,CAAAA,CAAO,EAChB,CAAA,CAAC,EACH,CACA,KAAA,CAAMc,CAAgB,CAAA,CACpB,IAAK,CAAA,SAAA,CAAUA,CAAM,CAChB,CAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,EAChB,IAAK,CAAA,OAAA,CAAS,KAAM,CAAA,OAAA,CAAQ,IAAI,EAEpC,CACF,CAAA,CAzCaqB,CACJ,CAAA,iBAAA,CAAoBO,KAAK,OAAQ,CAAA,GAAA,EAAO,CAAA,cAAc,CADxD,CAAA,IAAMC,EAANR,CDFP,CAEYS,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GACVA,CAAA,CAAA,OAAA,CAAY,SACZA,CAAAA,CAAAA,CAAA,IAAS,CAAA,MAAA,CACTA,CAAA,CAAA,MAAA,CAAW,QAHDA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,EAAA,IAUCC,CAAN,CAAA,MAAMA,CAAe,CAY1B,WAAY7C,CAAAA,CAAAA,CAAyC,CACnD,IAAK,CAAA,OAAA,CAAU8C,YAAaD,CAAAA,CAAAA,CAAe,eAAiB7C,CAAAA,CAAO,EACnE,IAAK,CAAA,MAAA,CAAS,IAAIsC,MAAAA,CAAO,IAAK,CAAA,OAAA,CAAQ,IAAI,CAAA,CACtC,IAAK,CAAA,OAAA,CAAQ,kBAAoB,EAAA,IAAA,CAAK,OAAQ,EAAA,CAClD,KAAK,IAAK,GACZ,CACA,OAAA,EAAU,CACJ,IAAA,CAAK,QAAQ,IAAM,EAAA,OAAA,CAAQ,GAAI,CAAA,IAAA,CAAK,OAAQ,CAAA,IAAI,EACpD,IAAK,CAAA,MAAA,CAAO,GAAI,CAAA,UAAU,CAC1B,CAAA,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,WAAc,CAAA,IAAA,CAAK,OAAQ,CAAA,OAAO,CAClD,CAAA,IAAA,CAAK,OAAO,GAAI,CAAA,eAAA,CAAkB,IAAK,CAAA,OAAA,CAAQ,WAAW,EAC5D,CAEA,IAAO,EAAA,CACL,IAA8BZ,CAAAA,CAAA,IAAK,CAAA,OAAA,CAA3B,OAAAqB,CA3CZ,CAAA,CA2CkCrB,CAAZ1B,CAAAA,CAAAA,CAAA4B,CAAYF,CAAAA,CAAAA,CAAZ,CAAV,OAAA,CAAA,CAAA,CACR,GAAI,CAACqB,CAAS,EAAA,CAACA,CAAM,CAAA,MAAA,CACnB,MAAM,IAAI,KAAA,CAAM,oBAAoB,CAAA,CAGlCA,CAAM,CAAA,MAAA,GAAW,GAAKA,CAAM,CAAA,CAAC,CAAM,GAAA,SAAA,GAGvC,IAAK,CAAA,OAAA,CAAUnC,eACXmC,CAAAA,CAAAA,CAAM,QAAS,CAAA,MAAiB,CAClC,GAAA,IAAA,CAAK,WAAc,CAAA,IAAI5C,CAAY6C,CAAAA,CAAAA,CAAAC,CAAA,CAAA,EAAA,CAAKjD,CAAL,CAAA,CAAA,CAAc,QAAS,IAAK,CAAA,OAAQ,CAAC,CAAA,CAAA,CAAA,CAEtE+C,CAAM,CAAA,QAAA,CAAS,QAAmB,CACpC,GAAA,IAAA,CAAK,aAAgB,CAAA,IAAIJ,CAAcK,CAAAA,CAAAA,CAAAC,EAAA,EAAKjD,CAAAA,CAAAA,CAAAA,CAAL,CAAc,OAAA,CAAS,IAAK,CAAA,OAAQ,CAAC,CAAA,CAAA,CAAA,CAE1E+C,CAAM,CAAA,QAAA,CAAS,SAAoB,CAAA,GACrC,IAAK,CAAA,cAAA,CAAiB,IAAI9B,CAAe+B,CAAAA,CAAAA,CAAAC,CAAA,CAAA,EAAA,CAAKjD,CAAL,CAAA,CAAA,CAAc,QAAS,IAAK,CAAA,OAAQ,CAAC,CAAA,CAAA,CAAA,EAElF,CACA,KAAA,CAAMc,EAAiB,CA9DzB,IAAAY,CAAAU,CAAAA,CAAAA,CAAAc,CAAAC,CAAAA,CAAAA,CAkEI,GAHKrC,CAAAA,GACHA,CAAS,CAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,CAAA,CAEpB,CAACA,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,qBAAqB,CAAA,CAAA,CAEvCY,CAAA,CAAA,IAAA,CAAK,iBAAL,IAAAA,EAAAA,CAAAA,CAAqB,KAAMZ,CAAAA,CAAAA,CAAAA,CAAAA,CAC3BsB,CAAA,CAAA,IAAA,CAAK,gBAAL,IAAAA,EAAAA,CAAAA,CAAoB,KAAMtB,CAAAA,CAAAA,CAAAA,CAAAA,CAC1BoC,CAAA,CAAA,IAAA,CAAK,WAAL,GAAA,IAAA,EAAAA,CAAkB,CAAA,KAAA,CAAMpC,CAExBqC,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,OAAA,GAAL,MAAAA,CAAc,CAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,EAC9B,CACF,EA1DaN,EACK,eAAyCG,CAAAA,CAAAA,CAAAC,CAAA,CAAA,EAAA,CACpDhD,CAAgB,CAAA,eAAA,CAAA,CADoC,CAEvD,IAAM,CAAA,EAAA,CACN,KAAO,CAAA,CAAC,MAAiB,CAAA,CACzB,kBAAoB,CAAA,KACtB,CANK,CAAA,CAAA,IAAMmD,CAANP,CAAAA,CAAAA,CA4DMQ,EAAMD,CAAAA","file":"CommandManager.mjs","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions);\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli"],"mappings":"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","file":"CommandManager.mjs","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
'use strict';var utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),
|
1
|
+
'use strict';var utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),c=require('lodash'),commander=require('commander');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var c__default=/*#__PURE__*/_interopDefault(c);/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var{merge:
|
4
|
+
var{merge:d}=c__default.default,r=class r{constructor(t){this.options=d({},r.DEFAULT_OPTIONS,t),this.init();}};r.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=r;var {get:h}=c__default.default,p=class extends s{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),i=utilsCore.nestedObjectToList({delimiter:".",json:t}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes});return i.filter(({key:o})=>!this.options.excludeOptions.includes(o)).map(({key:o,value:a})=>({key:o,value:a,type:n[o]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:i,value:n,type:o})=>{this.program.option(`--${i} <${o}>`,h(this.options.optionTitles,i),n);});}addAction(t){this.program.action(i=>{let n=utilsCore.unflatNestedObject({delimiter:".",data:i}),o=nestedArgs.NestedArgs.parse(n,{schema:this.options.optionTypes});t(o);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};exports.ArgsCommand=p;//# sourceMappingURL=ArgsCommand.js.map
|
5
5
|
//# sourceMappingURL=ArgsCommand.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions"],"mappings":";;;AAEA,GAAM,CAAE,
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions"],"mappings":"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","file":"ArgsCommand.js","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import {nestedObjectToList,flatNestedObject,unflatNestedObject}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import
|
1
|
+
import {nestedObjectToList,flatNestedObject,unflatNestedObject}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import c from'lodash';import {createCommand}from'commander';/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var{merge:
|
4
|
+
var{merge:d}=c,r=class r{constructor(t){this.options=d({},r.DEFAULT_OPTIONS,t),this.init();}};r.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=r;var {get:h}=c,p=class extends s{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),i=nestedObjectToList({delimiter:".",json:t}),n=flatNestedObject({delimiter:".",data:this.options.optionTypes});return i.filter(({key:o})=>!this.options.excludeOptions.includes(o)).map(({key:o,value:a})=>({key:o,value:a,type:n[o]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:i,value:n,type:o})=>{this.program.option(`--${i} <${o}>`,h(this.options.optionTitles,i),n);});}addAction(t){this.program.action(i=>{let n=unflatNestedObject({delimiter:".",data:i}),o=NestedArgs.parse(n,{schema:this.options.optionTypes});t(o);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};export{p as ArgsCommand};//# sourceMappingURL=ArgsCommand.mjs.map
|
5
5
|
//# sourceMappingURL=ArgsCommand.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions"],"mappings":";;;AAEA,GAAM,CAAE,
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions"],"mappings":"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","file":"ArgsCommand.mjs","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
'use strict';var prompts=require('@inquirer/prompts'),utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),A=require('lodash');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var A__default=/*#__PURE__*/_interopDefault(A);/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var f=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var u=(e,i)=>{var o={};for(var t in e)h.call(e,t)&&i.indexOf(t)<0&&(o[t]=e[t]);if(e!=null&&f)for(var t of f(e))i.indexOf(t)<0&&T.call(e,t)&&(o[t]=e[t]);return o};var p=(e,i,o)=>new Promise((t,n)=>{var s=a=>{try{l(o.next(a));}catch(m){n(m);}},r=a=>{try{l(o.throw(a));}catch(m){n(m);}},l=a=>a.done?t(a.value):Promise.resolve(a.value).then(s,r);l((o=o.apply(e,i)).next());});var{merge:R}=A__default.default,d=class d{constructor(i){this.options=R({},d.DEFAULT_OPTIONS,i),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var O=class extends c{getOptions(){let i=nestedArgs.NestedArgs.stringify(this.options.defaultOptions),o=utilsCore.nestedObjectToList({delimiter:".",json:i}),t=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:r})=>({key:s,defaultValue:r,type:t[s],title:n[s]}))}init(){let i=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:t,defaultValue:n,type:s,title:r}of i)s&&r&&(o[t]=(yield this.getActionResult({type:s,message:r,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(i){return p(this,null,function*(){let n=i,{type:o}=n,t=u(n,["type"]);return yield prompts.input(t)})}actionHandler(i){return p(this,null,function*(){let o=yield this.optionHandler(),t=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(t,this.options.optionTypes);i(n);})}start(i){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(i));return}this.actionHandler(i);})}};exports.PromptsCommand=O;//# sourceMappingURL=PromptsCommand.js.map
|
4
|
+
var f=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var u=(e,i)=>{var o={};for(var t in e)h.call(e,t)&&i.indexOf(t)<0&&(o[t]=e[t]);if(e!=null&&f)for(var t of f(e))i.indexOf(t)<0&&T.call(e,t)&&(o[t]=e[t]);return o};var p=(e,i,o)=>new Promise((t,n)=>{var s=a=>{try{l(o.next(a));}catch(m){n(m);}},r=a=>{try{l(o.throw(a));}catch(m){n(m);}},l=a=>a.done?t(a.value):Promise.resolve(a.value).then(s,r);l((o=o.apply(e,i)).next());});var{merge:R}=A__default.default,d=class d{constructor(i){this.options=R({},d.DEFAULT_OPTIONS,i),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var O=class extends c{getOptions(){let i=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:i}),t=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:r})=>({key:s,defaultValue:r,type:t[s],title:n[s]}))}init(){let i=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:t,defaultValue:n,type:s,title:r}of i)s&&r&&(o[t]=(yield this.getActionResult({type:s,message:r,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(i){return p(this,null,function*(){let n=i,{type:o}=n,t=u(n,["type"]);return yield prompts.input(t)})}actionHandler(i){return p(this,null,function*(){let o=yield this.optionHandler(),t=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(t,{schema:this.options.optionTypes});i(n);})}start(i){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(i));return}this.actionHandler(i);})}};exports.PromptsCommand=O;//# sourceMappingURL=PromptsCommand.js.map
|
5
5
|
//# sourceMappingURL=PromptsCommand.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","stringifyDefaultOptions","NestedArgs","flattedStringifyDefaultOptionList","nestedObjectToList","flattedOptionTypeList","flatNestedObject","flattedOptionTitleList","key","value","__async","result","defaultValue","type","title","_a","opts","__objRest","input","action","unflattedOptions","unflatNestedObject","typedResults"],"mappings":";;;AAaA,IAAA,CAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CCXA,GAAM,CAAE,KAAAA,CAAAA,CAAM,EAAIC,kBAuBIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAapC,
|
1
|
+
{"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","stringifyDefaultOptions","NestedArgs","flattedStringifyDefaultOptionList","nestedObjectToList","flattedOptionTypeList","flatNestedObject","flattedOptionTitleList","key","value","__async","result","defaultValue","type","title","_a","opts","__objRest","input","action","unflattedOptions","unflatNestedObject","typedResults"],"mappings":"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","file":"PromptsCommand.js","sourcesContent":["/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import {input}from'@inquirer/prompts';import {nestedObjectToList,flatNestedObject,unflatNestedObject}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import A from'lodash';/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var f=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var u=(e,i)=>{var o={};for(var t in e)h.call(e,t)&&i.indexOf(t)<0&&(o[t]=e[t]);if(e!=null&&f)for(var t of f(e))i.indexOf(t)<0&&T.call(e,t)&&(o[t]=e[t]);return o};var p=(e,i,o)=>new Promise((t,n)=>{var s=a=>{try{l(o.next(a));}catch(m){n(m);}},r=a=>{try{l(o.throw(a));}catch(m){n(m);}},l=a=>a.done?t(a.value):Promise.resolve(a.value).then(s,r);l((o=o.apply(e,i)).next());});var{merge:R}=A,d=class d{constructor(i){this.options=R({},d.DEFAULT_OPTIONS,i),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var O=class extends c{getOptions(){let i=NestedArgs.stringify(this.options.defaultOptions),o=nestedObjectToList({delimiter:".",json:i}),t=flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:r})=>({key:s,defaultValue:r,type:t[s],title:n[s]}))}init(){let i=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:t,defaultValue:n,type:s,title:r}of i)s&&r&&(o[t]=(yield this.getActionResult({type:s,message:r,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(i){return p(this,null,function*(){let n=i,{type:o}=n,t=u(n,["type"]);return yield input(t)})}actionHandler(i){return p(this,null,function*(){let o=yield this.optionHandler(),t=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(t,this.options.optionTypes);i(n);})}start(i){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(i));return}this.actionHandler(i);})}};export{O as PromptsCommand};//# sourceMappingURL=PromptsCommand.mjs.map
|
4
|
+
var f=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var u=(e,i)=>{var o={};for(var t in e)h.call(e,t)&&i.indexOf(t)<0&&(o[t]=e[t]);if(e!=null&&f)for(var t of f(e))i.indexOf(t)<0&&T.call(e,t)&&(o[t]=e[t]);return o};var p=(e,i,o)=>new Promise((t,n)=>{var s=a=>{try{l(o.next(a));}catch(m){n(m);}},r=a=>{try{l(o.throw(a));}catch(m){n(m);}},l=a=>a.done?t(a.value):Promise.resolve(a.value).then(s,r);l((o=o.apply(e,i)).next());});var{merge:R}=A,d=class d{constructor(i){this.options=R({},d.DEFAULT_OPTIONS,i),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var O=class extends c{getOptions(){let i=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=nestedObjectToList({delimiter:".",json:i}),t=flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:r})=>({key:s,defaultValue:r,type:t[s],title:n[s]}))}init(){let i=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:t,defaultValue:n,type:s,title:r}of i)s&&r&&(o[t]=(yield this.getActionResult({type:s,message:r,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(i){return p(this,null,function*(){let n=i,{type:o}=n,t=u(n,["type"]);return yield input(t)})}actionHandler(i){return p(this,null,function*(){let o=yield this.optionHandler(),t=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(t,{schema:this.options.optionTypes});i(n);})}start(i){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(i));return}this.actionHandler(i);})}};export{O as PromptsCommand};//# sourceMappingURL=PromptsCommand.mjs.map
|
5
5
|
//# sourceMappingURL=PromptsCommand.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","stringifyDefaultOptions","NestedArgs","flattedStringifyDefaultOptionList","nestedObjectToList","flattedOptionTypeList","flatNestedObject","flattedOptionTitleList","key","value","__async","result","defaultValue","type","title","_a","opts","__objRest","input","action","unflattedOptions","unflatNestedObject","typedResults"],"mappings":";;;AAaA,IAAA,CAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CCXA,GAAM,CAAE,KAAAA,CAAAA,CAAM,EAAIC,CAuBIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAapC,
|
1
|
+
{"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","stringifyDefaultOptions","NestedArgs","flattedStringifyDefaultOptionList","nestedObjectToList","flattedOptionTypeList","flatNestedObject","flattedOptionTitleList","key","value","__async","result","defaultValue","type","title","_a","opts","__objRest","input","action","unflattedOptions","unflatNestedObject","typedResults"],"mappings":"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","file":"PromptsCommand.mjs","sourcesContent":["/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n"]}
|
package/dist/command/index.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
'use strict';var utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),j=require('lodash'),commander=require('commander'),prompts=require('@inquirer/prompts'),G=require('fs-extra'),path=require('path'),logger=require('@tikkhun/logger'),configLoader=require('@tikkhun/config-loader');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var j__default=/*#__PURE__*/_interopDefault(j);var G__default=/*#__PURE__*/_interopDefault(G);/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var g=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var h=(s,t)=>{var i={};for(var n in s)C.call(s,n)&&t.indexOf(n)<0&&(i[n]=s[n]);if(s!=null&&g)for(var n of g(s))t.indexOf(n)<0&&b.call(s,n)&&(i[n]=s[n]);return i};var r=(s,t,i)=>new Promise((n,o)=>{var e=p=>{try{f(i.next(p));}catch(l){o(l);}},c=p=>{try{f(i.throw(p));}catch(l){o(l);}},f=p=>p.done?n(p.value):Promise.resolve(p.value).then(e,c);f((i=i.apply(s,t)).next());});var{merge:w}=j__default.default,
|
4
|
+
var g=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var h=(s,t)=>{var i={};for(var n in s)C.call(s,n)&&t.indexOf(n)<0&&(i[n]=s[n]);if(s!=null&&g)for(var n of g(s))t.indexOf(n)<0&&b.call(s,n)&&(i[n]=s[n]);return i};var r=(s,t,i)=>new Promise((n,o)=>{var e=p=>{try{f(i.next(p));}catch(l){o(l);}},c=p=>{try{f(i.throw(p));}catch(l){o(l);}},f=p=>p.done?n(p.value):Promise.resolve(p.value).then(e,c);f((i=i.apply(s,t)).next());});var{merge:w}=j__default.default,d=class d{constructor(t){this.options=w({},d.DEFAULT_OPTIONS,t),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var a=d;var {get:E}=j__default.default,O=class extends a{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),i=utilsCore.nestedObjectToList({delimiter:".",json:t}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes});return i.filter(({key:o})=>!this.options.excludeOptions.includes(o)).map(({key:o,value:e})=>({key:o,value:e,type:n[o]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:i,value:n,type:o})=>{this.program.option(`--${i} <${o}>`,E(this.options.optionTitles,i),n);});}addAction(t){this.program.action(i=>{let n=utilsCore.unflatNestedObject({delimiter:".",data:i}),o=nestedArgs.NestedArgs.parse(n,{schema:this.options.optionTypes});t(o);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var T=class extends a{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),i=utilsCore.nestedObjectToList({delimiter:".",json:t}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),o=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return i.map(({key:e,value:c})=>({key:e,defaultValue:c,type:n[e],title:o[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>r(this,null,function*(){let i={};for(let{key:n,defaultValue:o,type:e,title:c}of t)e&&c&&(i[n]=(yield this.getActionResult({type:e,message:c,default:o}))||o);return i}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return r(this,null,function*(){let o=t,{type:i}=o,n=h(o,["type"]);return yield prompts.input(n)})}actionHandler(t){return r(this,null,function*(){let i=yield this.optionHandler(),n=utilsCore.unflatNestedObject({delimiter:".",data:i}),o=nestedArgs.NestedArgs.parse(n,{schema:this.options.optionTypes});t(o);})}start(t){return r(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:mt,writeJson:I}=G__default.default,m=class m extends a{init(){var t,i;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(i=this.program)==null||i.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",m.defaultConfigPath).action(n=>r(this,null,function*(){let{path:o}=n;o||(o=m.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+o),yield I(o,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+o);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",m.defaultConfigPath);}addAction(t){this.program.action(n=>r(this,[n],function*({config:i=""}){let o=yield configLoader.loadConfig(i);if(!o)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${i}`);t(o);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};m.defaultConfigPath=path.join(process.cwd(),"release.json");var v=m;exports.AbstractCommand=a;exports.ArgsCommand=O;exports.ConfigCommand=v;exports.PromptsCommand=T;//# sourceMappingURL=index.js.map
|
5
5
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../lib/command/ArgsCommand.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand"],"mappings":"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","file":"index.js","sourcesContent":["import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions);\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../../lib/command/ArgsCommand.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand"],"mappings":";;;AAAA,IAAA,CAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CCEA,GAAM,CAAE,MAAAA,CAAM,CAAA,CAAIC,kBAuBIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAapC,WAAYC,CAAAA,CAAAA,CAAmC,CAE7C,IAAK,CAAA,OAAA,CAAUH,CAAM,CAAA,GAAIE,CAAgB,CAAA,eAAA,CAAiBC,CAAO,CACjE,CAAA,IAAA,CAAK,OACP,CAGF,CApBsBD,CAAAA,CAAAA,CACJ,gBAAkC,CAChD,OAAA,CAAS,MACT,CAAA,OAAA,CAAS,GACT,WAAa,CAAA,EAAA,CACb,IAAM,CAAA,MAAA,CACN,eAAgB,EAAC,CACjB,eAAgB,EAAC,CACjB,YAAa,EAAC,CACd,YAAc,CAAA,EAChB,CAVK,CAAA,IAAeE,EAAfF,EDpBD,IAAA,CAAE,IAAAG,CAAI,CAAA,CAAIJ,mBAMHK,CAAN,CAAA,cAA0BF,CAAgB,CAE/C,YAA2B,CACzB,IAAMG,CAAgBC,CAAAA,qBAAAA,CAAW,UAAU,IAAK,CAAA,OAAA,CAAQ,cAAgB,CAAA,CAAE,OAAQ,IAAK,CAAA,OAAA,CAAQ,WAAY,CAAC,CAAA,CACtGC,EAAaC,4BAAmB,CAAA,CAAE,SAAW,CAAA,GAAA,CAAK,KAAMH,CAAc,CAAC,EAEvEI,CAAgBC,CAAAA,0BAAAA,CAAiB,CAAE,SAAW,CAAA,GAAA,CAAK,IAAM,CAAA,IAAA,CAAK,QAAQ,WAAY,CAAC,EACzF,OAAOH,CAAAA,CACJ,OAAO,CAAC,CAAE,GAAAI,CAAAA,CAAI,IAET,CAAK,IAAA,CAAA,OAAA,CAAQ,cAAe,CAAA,QAAA,CAASA,CAAG,CAI7C,CAAA,CACA,GAAI,CAAA,CAAC,CAAE,GAAAA,CAAAA,CAAAA,CAAK,MAAAC,CAAM,CAAA,IACV,CAAE,GAAAD,CAAAA,CAAAA,CAAK,KAAAC,CAAAA,CAAAA,CAAO,KAAMH,CAAcE,CAAAA,CAAG,CAAE,CAC/C,CAAA,CACL,CACA,IAAa,EAAA,CACX,IAAK,CAAA,OAAA,CAAU,KAAK,OAAQ,CAAA,OAAA,EAAWE,yBACvC,CAAA,IAAMZ,EAAU,IAAK,CAAA,UAAA,EACrB,CAAA,IAAA,CAAK,WAAWA,CAAO,EACzB,CACQ,UAAA,CAAWA,EAAuB,CACxCA,CAAAA,CAAQ,OAAQ,CAAA,CAAC,CAAE,GAAAU,CAAAA,CAAAA,CAAK,MAAAC,CAAO,CAAA,IAAA,CAAAE,CAAK,CAAM,GAAA,CACxC,IAAK,CAAA,OAAA,CAAS,OAAO,CAAKH,EAAAA,EAAAA,CAAG,KAAKG,CAAI,CAAA,CAAA,CAAA,CAAKX,EAAI,IAAK,CAAA,OAAA,CAAQ,YAAcQ,CAAAA,CAAG,EAAGC,CAAK,EACvF,CAAC,EACH,CACQ,UAAUG,CAAgB,CAAA,CAChC,IAAK,CAAA,OAAA,CAAS,OAAQV,CAAkB,EAAA,CAEtC,IAAMJ,CAAAA,CAAUe,6BAAmB,CACjC,SAAA,CAAW,GACX,CAAA,IAAA,CAAMX,CACR,CAAC,CAAA,CACKY,EAAeX,qBAAW,CAAA,KAAA,CAAML,EAAS,CAAE,MAAA,CAAQ,IAAK,CAAA,OAAA,CAAQ,WAAY,CAAC,CAAA,CACnFc,EAAOE,CAAY,EACrB,CAAC,EACH,CACA,KAAMF,CAAAA,CAAAA,CAAgB,CACpB,IAAK,CAAA,SAAA,CAAUA,CAAM,CAEhB,CAAA,IAAA,CAAK,QAAQ,OAChB,EAAA,IAAA,CAAK,OAAS,CAAA,KAAA,CAAM,QAAQ,IAAI,EAEpC,CACF,MEjCaG,CAAN,CAAA,cAA6BhB,CAAgB,CAGlD,UAAA,EAAa,CACX,IAAMiB,CAAAA,CAA0Bb,qBAAW,CAAA,SAAA,CAAU,KAAK,OAAQ,CAAA,cAAA,CAAgB,CAChF,MAAQ,CAAA,IAAA,CAAK,QAAQ,WACvB,CAAC,CAEKc,CAAAA,CAAAA,CAAoCZ,6BAAmB,CAC3D,SAAA,CAAW,GACX,CAAA,IAAA,CAAMW,CACR,CAAC,CAAA,CACKE,CAAwBX,CAAAA,0BAAAA,CAAiB,CAC7C,SAAW,CAAA,GAAA,CACX,KAAM,IAAK,CAAA,OAAA,CAAQ,WACrB,CAAC,CAAA,CACKY,CAAyBZ,CAAAA,0BAAAA,CAAiB,CAC9C,SAAW,CAAA,GAAA,CACX,KAAM,IAAK,CAAA,OAAA,CAAQ,YACrB,CAAC,CAAA,CACD,OAAOU,CAAAA,CAAkC,IAAI,CAAC,CAAE,IAAAT,CAAK,CAAA,KAAA,CAAAC,CAAM,CAClD,IAAA,CACL,GAAKD,CAAAA,CAAAA,CACL,aAAcC,CACd,CAAA,IAAA,CAAMS,CAAsBV,CAAAA,CAAG,EAC/B,KAAOW,CAAAA,CAAAA,CAAuBX,CAAG,CACnC,EACD,CACH,CACA,MAAO,CACL,IAAMV,EAAU,IAAK,CAAA,UAAA,EAGrB,CAAA,IAAA,CAAK,cAAgB,IAAYsB,CAAAA,CAAA,sBAC/B,IAAMC,CAAAA,CAA8B,EACpC,CAAA,IAAA,GAAW,CAAE,GAAA,CAAAb,EAAK,YAAAc,CAAAA,CAAAA,CAAc,KAAAX,CAAM,CAAA,KAAA,CAAAY,CAAM,CAAKzB,GAAAA,CAAAA,CAC1Ca,CAGAY,EAAAA,CAAAA,GAGLF,EAAOb,CAAG,CAAA,CAAA,CAAK,MAAM,IAAA,CAAK,gBAAgB,CAAE,IAAA,CAAAG,CAAM,CAAA,OAAA,CAASY,EAAO,OAASD,CAAAA,CAAa,CAAC,CAAMA,GAAAA,CAAAA,CAAAA,CAEjG,OAAOD,CACT,CAAA,CAAA,CAEI,IAAK,CAAA,OAAA,CAAQ,UACf,IAAK,CAAA,OAAA,CAAU,KAAK,OAAQ,CAAA,OAAA,CAAQ,QAAQ,SAAS,CAAA,EAEzD,CACc,eAAA,CAAgBvB,EAAiC,CAAAsB,OAAAA,CAAAA,CAAA,sBAC7D,IAA0BI,CAAAA,CAAA1B,EAAlB,CAAAa,IAAAA,CAAAA,CA7EZ,CA6E8Ba,CAAAA,CAAAA,CAATC,EAAAC,CAASF,CAAAA,CAAAA,CAAT,CAAT,MAAA,CAAA,CAAA,CACR,OAAO,MAAMG,aAAAA,CAAMF,CAAI,CACzB,GACc,aAAcb,CAAAA,CAAAA,CAAgB,QAAAQ,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC1C,IAAMtB,CAAU,CAAA,MAAM,IAAK,CAAA,aAAA,GACrB8B,CAAmBf,CAAAA,4BAAAA,CAAmB,CAAE,SAAW,CAAA,GAAA,CAAK,KAAMf,CAAQ,CAAC,CACvE+B,CAAAA,CAAAA,CAAe1B,sBAAW,KAAMyB,CAAAA,CAAAA,CAAkB,CAAE,MAAQ,CAAA,IAAA,CAAK,QAAQ,WAAY,CAAC,CAC5FhB,CAAAA,CAAAA,CAAOiB,CAAY,EACrB,CAAA,CAAA,CACM,KAAMjB,CAAAA,CAAAA,CAAgB,QAAAQ,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC1B,GAAI,IAAA,CAAK,QAAS,CAChB,IAAA,CAAK,QAAQ,MAAO,CAAA,IAAM,KAAK,aAAcR,CAAAA,CAAM,CAAC,CAAA,CACpD,MACF,CACA,IAAA,CAAK,cAAcA,CAAM,EAC3B,GACF,EC3FA,GAAM,CAAE,QAAA,CAAAkB,EAAU,CAAA,SAAA,CAAAC,CAAU,CAAIC,CAAAA,kBAAAA,CAKnBC,EAAN,MAAMA,CAAAA,SAAsBlC,CAAgB,CAGjD,IAAA,EAAa,CAVf,IAAAyB,EAAAU,CAYI,CAAA,IAAA,CAAK,UAAUV,CAAA,CAAA,IAAA,CAAK,QAAQ,OAAb,GAAA,IAAA,CAAA,MAAA,CAAAA,CAAsB,CAAA,OAAA,CAAQ,YAAad,uBAAc,EAAA,CAAA,CAExEwB,EAAA,IAAK,CAAA,OAAA,GAAL,MAAAA,CACI,CAAA,OAAA,CAAQ,MACT,CAAA,CAAA,MAAA,CAAO,qBAAsB,sCAAUD,CAAAA,CAAAA,CAAc,iBACrD,CAAA,CAAA,MAAA,CAAcnC,GAAYsB,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACzB,GAAI,CAAE,KAAAe,CAAK,CAAA,CAAIrC,EACVqC,CACHA,GAAAA,CAAAA,CAAOF,EAAc,iBAEvBG,CAAAA,CAAAA,aAAAA,CAAO,GAAI,CAAA,kEAAA,CAAmBD,CAAI,CAClC,CAAA,MAAMJ,EAAUI,CAAM,CAAA,IAAA,CAAK,QAAQ,cAAgB,CAAA,CAAE,MAAQ,CAAA,CAAE,CAAC,CAChEC,CAAAA,aAAAA,CAAO,IAAI,kEAAmBD,CAAAA,CAAI,EACpC,CACF,CAAA,CAAA,CAAA,IAAA,CAAK,UAAW,GAClB,CACQ,UAAa,EAAA,CA5BvB,IAAAX,CAAAA,CAAAA,CA6BIA,EAAA,IAAK,CAAA,OAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAc,OAAO,sBAAwB,CAAA,0BAAA,CAAQS,EAAc,iBACrE,EAAA,CACQ,UAAUrB,CAAgB,CAAA,CAChC,IAAK,CAAA,OAAA,CAAS,OAAcyB,CAAoBjB,EAAAA,CAAAA,CAAA,MAApBiB,CAAoB,CAAA,CAAA,UAApB,CAAE,MAAAC,CAAAA,CAAAA,CAAS,EAAG,CAAA,CAAM,CAC9C,IAAIxC,CAAAA,CAAU,MAAMyC,uBAAWD,CAAAA,CAAM,EAErC,GAAI,CAACxC,CACH,CAAA,MAAM,IAAI,KAAM,CAAA,CAAA,4DAAA,EAAawC,CAAM,CAAA,CAAE,EAGvC1B,CAAOd,CAAAA,CAAO,EAChB,CAAA,CAAC,EACH,CACA,KAAA,CAAMc,EAAgB,CACpB,IAAA,CAAK,UAAUA,CAAM,CAAA,CAChB,IAAK,CAAA,OAAA,CAAQ,SAChB,IAAK,CAAA,OAAA,CAAS,MAAM,OAAQ,CAAA,IAAI,EAEpC,CACF,CAAA,CAzCaqB,CACJ,CAAA,iBAAA,CAAoBO,UAAK,OAAQ,CAAA,GAAA,GAAO,cAAc,CAAA,KADlDC,CAANR,CAAAA","file":"index.js","sourcesContent":["import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
package/dist/command/index.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import {nestedObjectToList,flatNestedObject,unflatNestedObject}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import j from'lodash';import {createCommand}from'commander';import {input}from'@inquirer/prompts';import G from'fs-extra';import {join}from'path';import {Logger}from'@tikkhun/logger';import {loadConfig}from'@tikkhun/config-loader';/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var g=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var h=(s,t)=>{var i={};for(var n in s)C.call(s,n)&&t.indexOf(n)<0&&(i[n]=s[n]);if(s!=null&&g)for(var n of g(s))t.indexOf(n)<0&&b.call(s,n)&&(i[n]=s[n]);return i};var r=(s,t,i)=>new Promise((n,o)=>{var e=p=>{try{f(i.next(p));}catch(l){o(l);}},c=p=>{try{f(i.throw(p));}catch(l){o(l);}},f=p=>p.done?n(p.value):Promise.resolve(p.value).then(e,c);f((i=i.apply(s,t)).next());});var{merge:w}=j,
|
4
|
+
var g=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var h=(s,t)=>{var i={};for(var n in s)C.call(s,n)&&t.indexOf(n)<0&&(i[n]=s[n]);if(s!=null&&g)for(var n of g(s))t.indexOf(n)<0&&b.call(s,n)&&(i[n]=s[n]);return i};var r=(s,t,i)=>new Promise((n,o)=>{var e=p=>{try{f(i.next(p));}catch(l){o(l);}},c=p=>{try{f(i.throw(p));}catch(l){o(l);}},f=p=>p.done?n(p.value):Promise.resolve(p.value).then(e,c);f((i=i.apply(s,t)).next());});var{merge:w}=j,d=class d{constructor(t){this.options=w({},d.DEFAULT_OPTIONS,t),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var a=d;var {get:E}=j,O=class extends a{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),i=nestedObjectToList({delimiter:".",json:t}),n=flatNestedObject({delimiter:".",data:this.options.optionTypes});return i.filter(({key:o})=>!this.options.excludeOptions.includes(o)).map(({key:o,value:e})=>({key:o,value:e,type:n[o]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:i,value:n,type:o})=>{this.program.option(`--${i} <${o}>`,E(this.options.optionTitles,i),n);});}addAction(t){this.program.action(i=>{let n=unflatNestedObject({delimiter:".",data:i}),o=NestedArgs.parse(n,{schema:this.options.optionTypes});t(o);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var T=class extends a{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),i=nestedObjectToList({delimiter:".",json:t}),n=flatNestedObject({delimiter:".",data:this.options.optionTypes}),o=flatNestedObject({delimiter:".",data:this.options.optionTitles});return i.map(({key:e,value:c})=>({key:e,defaultValue:c,type:n[e],title:o[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>r(this,null,function*(){let i={};for(let{key:n,defaultValue:o,type:e,title:c}of t)e&&c&&(i[n]=(yield this.getActionResult({type:e,message:c,default:o}))||o);return i}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return r(this,null,function*(){let o=t,{type:i}=o,n=h(o,["type"]);return yield input(n)})}actionHandler(t){return r(this,null,function*(){let i=yield this.optionHandler(),n=unflatNestedObject({delimiter:".",data:i}),o=NestedArgs.parse(n,{schema:this.options.optionTypes});t(o);})}start(t){return r(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:mt,writeJson:I}=G,m=class m extends a{init(){var t,i;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(i=this.program)==null||i.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",m.defaultConfigPath).action(n=>r(this,null,function*(){let{path:o}=n;o||(o=m.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+o),yield I(o,this.options.defaultOptions,{spaces:2}),Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+o);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",m.defaultConfigPath);}addAction(t){this.program.action(n=>r(this,[n],function*({config:i=""}){let o=yield loadConfig(i);if(!o)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${i}`);t(o);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};m.defaultConfigPath=join(process.cwd(),"release.json");var v=m;export{a as AbstractCommand,O as ArgsCommand,v as ConfigCommand,T as PromptsCommand};//# sourceMappingURL=index.mjs.map
|
5
5
|
//# sourceMappingURL=index.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../lib/command/ArgsCommand.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand"],"mappings":"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","file":"index.mjs","sourcesContent":["import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions);\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../../lib/command/ArgsCommand.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand"],"mappings":"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","file":"index.mjs","sourcesContent":["import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
package/dist/index.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
'use strict';var utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),H=require('lodash'),commander=require('commander'),prompts=require('@inquirer/prompts'),z=require('fs-extra'),path=require('path'),logger=require('@tikkhun/logger'),configLoader=require('@tikkhun/config-loader');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var H__default=/*#__PURE__*/_interopDefault(H);var z__default=/*#__PURE__*/_interopDefault(z);/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var S=Object.defineProperty,j=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var w=(s,t,o)=>t in s?S(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,c=(s,t)=>{for(var o in t||(t={}))L.call(t,o)&&w(s,o,t[o]);if(l)for(var o of l(t))P.call(t,o)&&w(s,o,t[o]);return s},g=(s,t)=>j(s,D(t));var f=(s,t)=>{var o={};for(var i in s)L.call(s,i)&&t.indexOf(i)<0&&(o[i]=s[i]);if(s!=null&&l)for(var i of l(s))t.indexOf(i)<0&&P.call(s,i)&&(o[i]=s[i]);return o};var a=(s,t,o)=>new Promise((i,n)=>{var r=p=>{try{T(o.next(p));}catch(x){n(x);}},m=p=>{try{T(o.throw(p));}catch(x){n(x);}},T=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,m);T((o=o.apply(s,t)).next());});var{merge:F}=H__default.default,h=class h{constructor(t){this.options=F({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var {get:G}=H__default.default,u=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:r})=>({key:n,value:r,type:i[n]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,G(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(i,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:i[r],title:n[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:r,title:m}of t)r&&m&&(o[i]=(yield this.getActionResult({type:r,message:m,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,{type:o}=n,i=f(n,["type"]);return yield prompts.input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(i,this.options.optionTypes);t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:vt,writeJson:B}=z__default.default,d=class d extends e{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=d.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield B(n,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",d.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n=yield configLoader.loadConfig(o);if(!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};d.defaultConfigPath=path.join(process.cwd(),"release.json");var y=d;var _=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(_||{}),C=class C{constructor(t){this.options=utilsCore.mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=f(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=commander.createCommand(),t.includes("args")&&(this.argsCommand=new u(g(c({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new y(g(c({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(g(c({},o),{program:this.program}))));}start(t){var o,i,n,r;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(r=this.program)==null||r.parse(process.argv);}};C.DEFAULT_OPTIONS=g(c({},e.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var v=C,zt=v;function Xt(s){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),logger.Logger.log("\u7248\u672C: "+s.version);}function Zt(s){s.logo&&console.log(s.logo),logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),logger.Logger.log("\u7248\u672C: "+s.version);}exports.AbstractCommand=e;exports.ArgsCommand=u;exports.Cli=zt;exports.CommandManager=v;exports.CommandTypes=_;exports.ConfigCommand=y;exports.PromptsCommand=O;exports.echo=Zt;exports.echoPackage=Xt;//# sourceMappingURL=index.js.map
|
4
|
+
var S=Object.defineProperty,j=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var w=(s,t,o)=>t in s?S(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,c=(s,t)=>{for(var o in t||(t={}))L.call(t,o)&&w(s,o,t[o]);if(l)for(var o of l(t))P.call(t,o)&&w(s,o,t[o]);return s},g=(s,t)=>j(s,D(t));var f=(s,t)=>{var o={};for(var i in s)L.call(s,i)&&t.indexOf(i)<0&&(o[i]=s[i]);if(s!=null&&l)for(var i of l(s))t.indexOf(i)<0&&P.call(s,i)&&(o[i]=s[i]);return o};var a=(s,t,o)=>new Promise((i,n)=>{var r=p=>{try{T(o.next(p));}catch(x){n(x);}},m=p=>{try{T(o.throw(p));}catch(x){n(x);}},T=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,m);T((o=o.apply(s,t)).next());});var{merge:F}=H__default.default,h=class h{constructor(t){this.options=F({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var {get:G}=H__default.default,u=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:r})=>({key:n,value:r,type:i[n]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,G(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(i,{schema:this.options.optionTypes});t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:i[r],title:n[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:r,title:m}of t)r&&m&&(o[i]=(yield this.getActionResult({type:r,message:m,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,{type:o}=n,i=f(n,["type"]);return yield prompts.input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(i,{schema:this.options.optionTypes});t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:vt,writeJson:B}=z__default.default,d=class d extends e{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=d.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield B(n,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",d.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n=yield configLoader.loadConfig(o);if(!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};d.defaultConfigPath=path.join(process.cwd(),"release.json");var y=d;var _=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(_||{}),C=class C{constructor(t){this.options=utilsCore.mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=f(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=commander.createCommand(),t.includes("args")&&(this.argsCommand=new u(g(c({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new y(g(c({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(g(c({},o),{program:this.program}))));}start(t){var o,i,n,r;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(r=this.program)==null||r.parse(process.argv);}};C.DEFAULT_OPTIONS=g(c({},e.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var v=C,zt=v;function Xt(s){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),logger.Logger.log("\u7248\u672C: "+s.version);}function Zt(s){s.logo&&console.log(s.logo),logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),logger.Logger.log("\u7248\u672C: "+s.version);}exports.AbstractCommand=e;exports.ArgsCommand=u;exports.Cli=zt;exports.CommandManager=v;exports.CommandTypes=_;exports.ConfigCommand=y;exports.PromptsCommand=O;exports.echo=Zt;exports.echoPackage=Xt;//# sourceMappingURL=index.js.map
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions);\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n"]}
|
1
|
+
{"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n"]}
|
package/dist/index.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import {nestedObjectToList,flatNestedObject,unflatNestedObject,mergeOptions}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import H from'lodash';import {createCommand}from'commander';import {input}from'@inquirer/prompts';import z from'fs-extra';import {join}from'path';import {Logger}from'@tikkhun/logger';import {loadConfig}from'@tikkhun/config-loader';/**
|
2
2
|
@tikkhun/cli-core
|
3
3
|
*/
|
4
|
-
var S=Object.defineProperty,j=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var w=(s,t,o)=>t in s?S(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,c=(s,t)=>{for(var o in t||(t={}))L.call(t,o)&&w(s,o,t[o]);if(l)for(var o of l(t))P.call(t,o)&&w(s,o,t[o]);return s},g=(s,t)=>j(s,D(t));var f=(s,t)=>{var o={};for(var i in s)L.call(s,i)&&t.indexOf(i)<0&&(o[i]=s[i]);if(s!=null&&l)for(var i of l(s))t.indexOf(i)<0&&P.call(s,i)&&(o[i]=s[i]);return o};var a=(s,t,o)=>new Promise((i,n)=>{var r=p=>{try{T(o.next(p));}catch(x){n(x);}},m=p=>{try{T(o.throw(p));}catch(x){n(x);}},T=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,m);T((o=o.apply(s,t)).next());});var{merge:F}=H,h=class h{constructor(t){this.options=F({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var {get:G}=H,u=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:r})=>({key:n,value:r,type:i[n]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,G(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:i[r],title:n[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:r,title:m}of t)r&&m&&(o[i]=(yield this.getActionResult({type:r,message:m,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,{type:o}=n,i=f(n,["type"]);return yield input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,this.options.optionTypes);t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:vt,writeJson:B}=z,d=class d extends e{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=d.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield B(n,this.options.defaultOptions,{spaces:2}),Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",d.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n=yield loadConfig(o);if(!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};d.defaultConfigPath=join(process.cwd(),"release.json");var y=d;var _=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(_||{}),C=class C{constructor(t){this.options=mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=f(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=createCommand(),t.includes("args")&&(this.argsCommand=new u(g(c({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new y(g(c({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(g(c({},o),{program:this.program}))));}start(t){var o,i,n,r;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(r=this.program)==null||r.parse(process.argv);}};C.DEFAULT_OPTIONS=g(c({},e.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var v=C,zt=v;function Xt(s){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),Logger.log("\u7248\u672C: "+s.version);}function Zt(s){s.logo&&console.log(s.logo),Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),Logger.log("\u7248\u672C: "+s.version);}export{e as AbstractCommand,u as ArgsCommand,zt as Cli,v as CommandManager,_ as CommandTypes,y as ConfigCommand,O as PromptsCommand,Zt as echo,Xt as echoPackage};//# sourceMappingURL=index.mjs.map
|
4
|
+
var S=Object.defineProperty,j=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var w=(s,t,o)=>t in s?S(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,c=(s,t)=>{for(var o in t||(t={}))L.call(t,o)&&w(s,o,t[o]);if(l)for(var o of l(t))P.call(t,o)&&w(s,o,t[o]);return s},g=(s,t)=>j(s,D(t));var f=(s,t)=>{var o={};for(var i in s)L.call(s,i)&&t.indexOf(i)<0&&(o[i]=s[i]);if(s!=null&&l)for(var i of l(s))t.indexOf(i)<0&&P.call(s,i)&&(o[i]=s[i]);return o};var a=(s,t,o)=>new Promise((i,n)=>{var r=p=>{try{T(o.next(p));}catch(x){n(x);}},m=p=>{try{T(o.throw(p));}catch(x){n(x);}},T=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,m);T((o=o.apply(s,t)).next());});var{merge:F}=H,h=class h{constructor(t){this.options=F({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var {get:G}=H,u=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes});return o.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:r})=>({key:n,value:r,type:i[n]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:i,type:n})=>{this.program.option(`--${o} <${n}>`,G(this.options.optionTitles,o),i);});}addAction(t){this.program.action(o=>{let i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,{schema:this.options.optionTypes});t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=nestedObjectToList({delimiter:".",json:t}),i=flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:i[r],title:n[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:i,defaultValue:n,type:r,title:m}of t)r&&m&&(o[i]=(yield this.getActionResult({type:r,message:m,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let n=t,{type:o}=n,i=f(n,["type"]);return yield input(i)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),i=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(i,{schema:this.options.optionTypes});t(n);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:vt,writeJson:B}=z,d=class d extends e{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(i=>a(this,null,function*(){let{path:n}=i;n||(n=d.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield B(n,this.options.defaultOptions,{spaces:2}),Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",d.defaultConfigPath);}addAction(t){this.program.action(i=>a(this,[i],function*({config:o=""}){let n=yield loadConfig(o);if(!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};d.defaultConfigPath=join(process.cwd(),"release.json");var y=d;var _=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(_||{}),C=class C{constructor(t){this.options=mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=f(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.length===1&&t[0]==="prompts"||(this.program=createCommand(),t.includes("args")&&(this.argsCommand=new u(g(c({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new y(g(c({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(g(c({},o),{program:this.program}))));}start(t){var o,i,n,r;if(t||(t=this.options.action),!t)throw new Error("action is undefined");(o=this.promptsCommand)==null||o.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(r=this.program)==null||r.parse(process.argv);}};C.DEFAULT_OPTIONS=g(c({},e.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:false});var v=C,zt=v;function Xt(s){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),Logger.log("\u7248\u672C: "+s.version);}function Zt(s){s.logo&&console.log(s.logo),Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),Logger.log("\u7248\u672C: "+s.version);}export{e as AbstractCommand,u as ArgsCommand,zt as Cli,v as CommandManager,_ as CommandTypes,y as ConfigCommand,O as PromptsCommand,Zt as echo,Xt as echoPackage};//# sourceMappingURL=index.mjs.map
|
5
5
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions);\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, this.options.optionTypes);\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n"]}
|
1
|
+
{"version":3,"sources":["../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","action","unflatNestedObject","typedOptions","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","loadConfig","join","ConfigCommand","CommandTypes","_CommandManager","mergeOptions","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return optionList\n .filter(({ key }) => {\n // 排除掉排除的选项\n if (this.options.excludeOptions.includes(key)) {\n return false;\n }\n return true;\n })\n .map(({ key, value }) => {\n return { key, value, type: optionTypeMap[key] };\n });\n }\n init(): void {\n this.program = this.options.program || createCommand();\n const options = this.getOptions();\n this.addOptions(options);\n }\n private addOptions(options: ArgsOption[]) {\n options.forEach(({ key, value, type }) => {\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action((stringOptions) => {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n action(typedOptions);\n });\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@tikkhun/cli-core",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.26",
|
4
4
|
"description": "",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"module": "dist/index.mjs",
|
@@ -31,9 +31,9 @@
|
|
31
31
|
"commander": "^14.0.0",
|
32
32
|
"fs-extra": "^11.3.0",
|
33
33
|
"lodash": "^4.17.21",
|
34
|
-
"@tikkhun/nested-args": "^0.0.2",
|
35
|
-
"@tikkhun/config-loader": "^0.0.11",
|
36
34
|
"@tikkhun/utils-core": "^0.0.20",
|
35
|
+
"@tikkhun/config-loader": "^0.0.11",
|
36
|
+
"@tikkhun/nested-args": "^0.0.2",
|
37
37
|
"@tikkhun/logger": "^1.0.8"
|
38
38
|
},
|
39
39
|
"devDependencies": {
|