@tikkhun/cli-core 0.0.17 → 0.0.18

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.
@@ -14,6 +14,7 @@ declare enum CommandTypes {
14
14
  interface CommandManagerOptions extends CommandOptions {
15
15
  name: string;
16
16
  types: CommandTypes[];
17
+ immediatelyWelcome: boolean;
17
18
  }
18
19
  declare class CommandManager {
19
20
  static readonly DEFAULT_OPTIONS: CommandManagerOptions;
@@ -14,6 +14,7 @@ declare enum CommandTypes {
14
14
  interface CommandManagerOptions extends CommandOptions {
15
15
  name: string;
16
16
  types: CommandTypes[];
17
+ immediatelyWelcome: boolean;
17
18
  }
18
19
  declare class CommandManager {
19
20
  static readonly DEFAULT_OPTIONS: CommandManagerOptions;
@@ -16,7 +16,7 @@ var ___default = /*#__PURE__*/_interopDefault(_);
16
16
  /**
17
17
  @tikkhun/cli-core
18
18
  */
19
- var I=Object.defineProperty,K=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable;var S=(o,t,r)=>t in o?I(o,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[t]=r,d=(o,t)=>{for(var r in t||(t={}))R.call(t,r)&&S(o,r,t[r]);if(l)for(var r of l(t))E.call(t,r)&&S(o,r,t[r]);return o},y=(o,t)=>K(o,F(t));var u=(o,t)=>{var r={};for(var n in o)R.call(o,n)&&t.indexOf(n)<0&&(r[n]=o[n]);if(o!=null&&l)for(var n of l(o))t.indexOf(n)<0&&E.call(o,n)&&(r[n]=o[n]);return r};var p=(o,t,r)=>new Promise((n,i)=>{var s=c=>{try{b(r.next(c));}catch(x){i(x);}},a=c=>{try{b(r.throw(c));}catch(x){i(x);}},b=c=>c.done?n(c.value):Promise.resolve(c.value).then(s,a);b((r=r.apply(o,t)).next());});var{merge:U}=H__default.default,h=class h{constructor(t){this.options=U({},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 j={stringify(o){return o!=null&&o.length?o.toString():""},parse(o){return o.split(",")}};var Y=["true",!0,"1",1];var L={stringify(o){return o.toString()},parse(o){return !!Y.includes(o)}};var P={stringify(o){return o!=null&&o.length?o.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(o){return o?o.split(",").map(t=>{if(!t)return;let[r,n]=t.split("=");return {key:r,value:n}}).filter(t=>t):[]}};var k={stringify(o){return o.toString()},parse(o){return Number(o)}};var V={stringify(o){return JSON.stringify(o)},parse(o){try{return JSON.parse(o)||[]}catch(t){return []}}};var J={stringify(o){return JSON.stringify(o)},parse(o){return typeof o=="object"?JSON.parse(o):{}}};var g={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class o{constructor(t){this.schema=t;}parse(t){return o.parse(t,this.schema)}static parse(t,r){let n={};return Object.entries(t).forEach(([i,s])=>{let a=r[i];typeof s=="object"?n[i]=o.parse(s,a):n[i]=o.parseValueByType(s,a);}),n}static parseValueByType(t,r){if(t!=="undefined")return r===g.keyValueArray?P.parse(t):r===g.objectArray?V.parse(t):r===g.array?j.parse(t):r===g.object?J.parse(t):r===g.number?k.parse(t):r===g.boolean?L.parse(t):t}static stringify(t){let r={};return Object.entries(t).forEach(([n,i])=>{r[n]=o.stringifyValue(i);}),r}static stringifyValue(t){if(Array.isArray(t)){let r=t[0];return typeof r=="object"?this.isKeyValueObject(r)?P.stringify(t):V.stringify(t):j.stringify(t)}return typeof t=="object"?o.stringify(t):""+t}static isKeyValueObject(t){let r=Object.keys(t);return r[0]==="key"&&r[1]==="value"}};var{get:q}=H__default.default,T=class extends e{getOptions(){let t=m.stringify(this.options.defaultOptions),r=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return r.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:s})=>({key:i,value:s,type:n[i]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:r,value:n,type:i})=>{this.program.option(`--${r} <${i}>`,q(this.options.optionTitles,r),n);});}addAction(t){this.program.action(r=>{let n=utilsCore.unflatJson({delimiter:".",data:r}),i=m.parse(n,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=m.stringify(this.options.defaultOptions),r=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return r.map(({key:s,value:a})=>({key:s,defaultValue:a,type:n[s],title:i[s]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let r={};for(let{key:n,defaultValue:i,type:s,title:a}of t)s&&a&&(r[n]=(yield this.getActionResult({type:s,message:a,default:i}))||i);return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let i=t,n=u(i,["type"]);return yield prompts.input(n)})}actionHandler(t){return p(this,null,function*(){let r=yield this.optionHandler(),n=utilsCore.unflatJson({delimiter:".",data:r}),i=m.parse(n,this.options.optionTypes);t(i);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:tt,writeJson:rt}=___default.default,f=class f extends e{init(){var t,r;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(r=this.program)==null||r.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",f.defaultConfigPath).action(n=>p(this,null,function*(){let{path:i}=n;i||(i=f.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield rt(i,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",f.defaultConfigPath);}addAction(t){this.program.action(n=>p(this,[n],function*({config:r=""}){let i;if(r.endsWith(".js")?i=yield import(r):r.endsWith(".json")&&(i=yield tt(r)),!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${r}`);t(i);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=path.join(process.cwd(),"release.json");var A=f;var {merge:it}=H__default.default,at=(n=>(n.prompts="prompts",n.args="args",n.config="config",n))(at||{}),C=class C{constructor(t){this.options=it({},C.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),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 n=this.options,{types:t}=n,r=u(n,["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 T(y(d({},r),{program:this.program}))),t.includes("config")&&(this.configCommand=new A(y(d({},r),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(y(d({},r),{program:this.program}))));}start(t){var r,n,i,s;(r=this.promptsCommand)==null||r.start(t),(n=this.configCommand)==null||n.start(t),(i=this.argsCommand)==null||i.start(t),(s=this.program)==null||s.parse(process.argv);}};C.DEFAULT_OPTIONS=y(d({},e.DEFAULT_OPTIONS),{types:["args"],name:""});var w=C,gr=w;
19
+ var I=Object.defineProperty,K=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable;var S=(o,t,r)=>t in o?I(o,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[t]=r,d=(o,t)=>{for(var r in t||(t={}))R.call(t,r)&&S(o,r,t[r]);if(l)for(var r of l(t))E.call(t,r)&&S(o,r,t[r]);return o},y=(o,t)=>K(o,F(t));var u=(o,t)=>{var r={};for(var i in o)R.call(o,i)&&t.indexOf(i)<0&&(r[i]=o[i]);if(o!=null&&l)for(var i of l(o))t.indexOf(i)<0&&E.call(o,i)&&(r[i]=o[i]);return r};var p=(o,t,r)=>new Promise((i,n)=>{var e=c=>{try{b(r.next(c));}catch(x){n(x);}},a=c=>{try{b(r.throw(c));}catch(x){n(x);}},b=c=>c.done?i(c.value):Promise.resolve(c.value).then(e,a);b((r=r.apply(o,t)).next());});var{merge:W}=H__default.default,h=class h{constructor(t){this.options=W({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=h;var j={stringify(o){return o!=null&&o.length?o.toString():""},parse(o){return o.split(",")}};var U=["true",!0,"1",1];var L={stringify(o){return o.toString()},parse(o){return !!U.includes(o)}};var P={stringify(o){return o!=null&&o.length?o.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(o){return o?o.split(",").map(t=>{if(!t)return;let[r,i]=t.split("=");return {key:r,value:i}}).filter(t=>t):[]}};var k={stringify(o){return o.toString()},parse(o){return Number(o)}};var V={stringify(o){return JSON.stringify(o)},parse(o){try{return JSON.parse(o)||[]}catch(t){return []}}};var J={stringify(o){return JSON.stringify(o)},parse(o){return typeof o=="object"?JSON.parse(o):{}}};var g={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class o{constructor(t){this.schema=t;}parse(t){return o.parse(t,this.schema)}static parse(t,r){let i={};return Object.entries(t).forEach(([n,e])=>{let a=r[n];typeof e=="object"?i[n]=o.parse(e,a):i[n]=o.parseValueByType(e,a);}),i}static parseValueByType(t,r){if(t!=="undefined")return r===g.keyValueArray?P.parse(t):r===g.objectArray?V.parse(t):r===g.array?j.parse(t):r===g.object?J.parse(t):r===g.number?k.parse(t):r===g.boolean?L.parse(t):t}static stringify(t){let r={};return Object.entries(t).forEach(([i,n])=>{r[i]=o.stringifyValue(n);}),r}static stringifyValue(t){if(Array.isArray(t)){let r=t[0];return typeof r=="object"?this.isKeyValueObject(r)?P.stringify(t):V.stringify(t):j.stringify(t)}return typeof t=="object"?o.stringify(t):""+t}static isKeyValueObject(t){let r=Object.keys(t);return r[0]==="key"&&r[1]==="value"}};var{get:q}=H__default.default,T=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),r=utilsCore.jsonToList({delimiter:".",json:t}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return r.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:e})=>({key:n,value:e,type:i[n]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:r,value:i,type:n})=>{this.program.option(`--${r} <${n}>`,q(this.options.optionTitles,r),i);});}addAction(t){this.program.action(r=>{let i=utilsCore.unflatJson({delimiter:".",data:r}),n=m.parse(i,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),r=utilsCore.jsonToList({delimiter:".",json:t}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return r.map(({key:e,value:a})=>({key:e,defaultValue:a,type:i[e],title:n[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let r={};for(let{key:i,defaultValue:n,type:e,title:a}of t)e&&a&&(r[i]=(yield this.getActionResult({type:e,message:a,default:n}))||n);return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let n=t,i=u(n,["type"]);return yield prompts.input(i)})}actionHandler(t){return p(this,null,function*(){let r=yield this.optionHandler(),i=utilsCore.unflatJson({delimiter:".",data:r}),n=m.parse(i,this.options.optionTypes);t(n);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:tt,writeJson:rt}=___default.default,f=class f extends s{init(){var t,r;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(r=this.program)==null||r.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",f.defaultConfigPath).action(i=>p(this,null,function*(){let{path:n}=i;n||(n=f.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield rt(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",f.defaultConfigPath);}addAction(t){this.program.action(i=>p(this,[i],function*({config:r=""}){let n;if(r.endsWith(".js")?n=yield import(r):r.endsWith(".json")&&(n=yield tt(r)),!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${r}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=path.join(process.cwd(),"release.json");var A=f;var {merge:nt}=H__default.default,at=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(at||{}),C=class C{constructor(t){this.options=nt({},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,r=u(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 T(y(d({},r),{program:this.program}))),t.includes("config")&&(this.configCommand=new A(y(d({},r),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(y(d({},r),{program:this.program}))));}start(t){var r,i,n,e;(r=this.promptsCommand)==null||r.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(e=this.program)==null||e.parse(process.argv);}};C.DEFAULT_OPTIONS=y(d({},s.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:!1});var w=C,gr=w;
20
20
 
21
21
  exports.Cli = gr;
22
22
  exports.CommandManager = w;
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/CommandManager.ts","../lib/command/command.interface.ts","../lib/options-transformer/paramTypes/array.type.ts","../lib/options-transformer/paramTypes/boolean.type.ts","../lib/options-transformer/paramTypes/key-value-array.type.ts","../lib/options-transformer/paramTypes/number.type.ts","../lib/options-transformer/paramTypes/object-array.type.ts","../lib/options-transformer/paramTypes/object.type.ts","../lib/options-transformer/options-transformer.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","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","join","ConfigCommand","CommandTypes","_CommandManager","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli"],"mappings":"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","file":"CommandManager.js","sourcesContent":["// import { merge } from 'lodash'; // 这个怎么解决\nimport _ from 'lodash';\nconst { merge } = _;\nimport { 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';\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}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n 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 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 } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\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: (options: any) => any): void;\n}\n","import { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ 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 jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionsTransformer.parse(jsonOptions, 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\nimport { AbstractCommand, Action } from './command.interface';\nimport _ from 'lodash';\nconst { get } = _;\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\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 = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionsTransformer.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';\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;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(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/CommandManager.ts","../lib/command/command.interface.ts","../lib/options-transformer/paramTypes/array.type.ts","../lib/options-transformer/paramTypes/boolean.type.ts","../lib/options-transformer/paramTypes/key-value-array.type.ts","../lib/options-transformer/paramTypes/number.type.ts","../lib/options-transformer/paramTypes/object-array.type.ts","../lib/options-transformer/paramTypes/object.type.ts","../lib/options-transformer/options-transformer.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","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","join","ConfigCommand","CommandTypes","_CommandManager","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli"],"mappings":"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","file":"CommandManager.js","sourcesContent":["// import { merge } from 'lodash'; // 这个怎么解决\nimport _ from 'lodash';\nconst { merge } = _;\nimport { 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';\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 = merge({}, 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 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 } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\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: (options: any) => any): void;\n}\n","import { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ 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 jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionsTransformer.parse(jsonOptions, 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\nimport { AbstractCommand, Action } from './command.interface';\nimport _ from 'lodash';\nconst { get } = _;\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\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 = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionsTransformer.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';\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;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(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"]}
@@ -9,7 +9,7 @@ import { join } from 'path';
9
9
  /**
10
10
  @tikkhun/cli-core
11
11
  */
12
- var I=Object.defineProperty,K=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable;var S=(o,t,r)=>t in o?I(o,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[t]=r,d=(o,t)=>{for(var r in t||(t={}))R.call(t,r)&&S(o,r,t[r]);if(l)for(var r of l(t))E.call(t,r)&&S(o,r,t[r]);return o},y=(o,t)=>K(o,F(t));var u=(o,t)=>{var r={};for(var n in o)R.call(o,n)&&t.indexOf(n)<0&&(r[n]=o[n]);if(o!=null&&l)for(var n of l(o))t.indexOf(n)<0&&E.call(o,n)&&(r[n]=o[n]);return r};var p=(o,t,r)=>new Promise((n,i)=>{var s=c=>{try{b(r.next(c));}catch(x){i(x);}},a=c=>{try{b(r.throw(c));}catch(x){i(x);}},b=c=>c.done?n(c.value):Promise.resolve(c.value).then(s,a);b((r=r.apply(o,t)).next());});var{merge:U}=H,h=class h{constructor(t){this.options=U({},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 j={stringify(o){return o!=null&&o.length?o.toString():""},parse(o){return o.split(",")}};var Y=["true",!0,"1",1];var L={stringify(o){return o.toString()},parse(o){return !!Y.includes(o)}};var P={stringify(o){return o!=null&&o.length?o.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(o){return o?o.split(",").map(t=>{if(!t)return;let[r,n]=t.split("=");return {key:r,value:n}}).filter(t=>t):[]}};var k={stringify(o){return o.toString()},parse(o){return Number(o)}};var V={stringify(o){return JSON.stringify(o)},parse(o){try{return JSON.parse(o)||[]}catch(t){return []}}};var J={stringify(o){return JSON.stringify(o)},parse(o){return typeof o=="object"?JSON.parse(o):{}}};var g={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class o{constructor(t){this.schema=t;}parse(t){return o.parse(t,this.schema)}static parse(t,r){let n={};return Object.entries(t).forEach(([i,s])=>{let a=r[i];typeof s=="object"?n[i]=o.parse(s,a):n[i]=o.parseValueByType(s,a);}),n}static parseValueByType(t,r){if(t!=="undefined")return r===g.keyValueArray?P.parse(t):r===g.objectArray?V.parse(t):r===g.array?j.parse(t):r===g.object?J.parse(t):r===g.number?k.parse(t):r===g.boolean?L.parse(t):t}static stringify(t){let r={};return Object.entries(t).forEach(([n,i])=>{r[n]=o.stringifyValue(i);}),r}static stringifyValue(t){if(Array.isArray(t)){let r=t[0];return typeof r=="object"?this.isKeyValueObject(r)?P.stringify(t):V.stringify(t):j.stringify(t)}return typeof t=="object"?o.stringify(t):""+t}static isKeyValueObject(t){let r=Object.keys(t);return r[0]==="key"&&r[1]==="value"}};var{get:q}=H,T=class extends e{getOptions(){let t=m.stringify(this.options.defaultOptions),r=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes});return r.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:s})=>({key:i,value:s,type:n[i]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:r,value:n,type:i})=>{this.program.option(`--${r} <${i}>`,q(this.options.optionTitles,r),n);});}addAction(t){this.program.action(r=>{let n=unflatJson({delimiter:".",data:r}),i=m.parse(n,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends e{getOptions(){let t=m.stringify(this.options.defaultOptions),r=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes}),i=flatJson({delimiter:".",data:this.options.optionTitles});return r.map(({key:s,value:a})=>({key:s,defaultValue:a,type:n[s],title:i[s]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let r={};for(let{key:n,defaultValue:i,type:s,title:a}of t)s&&a&&(r[n]=(yield this.getActionResult({type:s,message:a,default:i}))||i);return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let i=t,n=u(i,["type"]);return yield input(n)})}actionHandler(t){return p(this,null,function*(){let r=yield this.optionHandler(),n=unflatJson({delimiter:".",data:r}),i=m.parse(n,this.options.optionTypes);t(i);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:tt,writeJson:rt}=_,f=class f extends e{init(){var t,r;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(r=this.program)==null||r.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",f.defaultConfigPath).action(n=>p(this,null,function*(){let{path:i}=n;i||(i=f.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield rt(i,this.options.defaultOptions,{spaces:2}),Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",f.defaultConfigPath);}addAction(t){this.program.action(n=>p(this,[n],function*({config:r=""}){let i;if(r.endsWith(".js")?i=yield import(r):r.endsWith(".json")&&(i=yield tt(r)),!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${r}`);t(i);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=join(process.cwd(),"release.json");var A=f;var {merge:it}=H,at=(n=>(n.prompts="prompts",n.args="args",n.config="config",n))(at||{}),C=class C{constructor(t){this.options=it({},C.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),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 n=this.options,{types:t}=n,r=u(n,["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 T(y(d({},r),{program:this.program}))),t.includes("config")&&(this.configCommand=new A(y(d({},r),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(y(d({},r),{program:this.program}))));}start(t){var r,n,i,s;(r=this.promptsCommand)==null||r.start(t),(n=this.configCommand)==null||n.start(t),(i=this.argsCommand)==null||i.start(t),(s=this.program)==null||s.parse(process.argv);}};C.DEFAULT_OPTIONS=y(d({},e.DEFAULT_OPTIONS),{types:["args"],name:""});var w=C,gr=w;
12
+ var I=Object.defineProperty,K=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable;var S=(o,t,r)=>t in o?I(o,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[t]=r,d=(o,t)=>{for(var r in t||(t={}))R.call(t,r)&&S(o,r,t[r]);if(l)for(var r of l(t))E.call(t,r)&&S(o,r,t[r]);return o},y=(o,t)=>K(o,F(t));var u=(o,t)=>{var r={};for(var i in o)R.call(o,i)&&t.indexOf(i)<0&&(r[i]=o[i]);if(o!=null&&l)for(var i of l(o))t.indexOf(i)<0&&E.call(o,i)&&(r[i]=o[i]);return r};var p=(o,t,r)=>new Promise((i,n)=>{var e=c=>{try{b(r.next(c));}catch(x){n(x);}},a=c=>{try{b(r.throw(c));}catch(x){n(x);}},b=c=>c.done?i(c.value):Promise.resolve(c.value).then(e,a);b((r=r.apply(o,t)).next());});var{merge:W}=H,h=class h{constructor(t){this.options=W({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=h;var j={stringify(o){return o!=null&&o.length?o.toString():""},parse(o){return o.split(",")}};var U=["true",!0,"1",1];var L={stringify(o){return o.toString()},parse(o){return !!U.includes(o)}};var P={stringify(o){return o!=null&&o.length?o.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(o){return o?o.split(",").map(t=>{if(!t)return;let[r,i]=t.split("=");return {key:r,value:i}}).filter(t=>t):[]}};var k={stringify(o){return o.toString()},parse(o){return Number(o)}};var V={stringify(o){return JSON.stringify(o)},parse(o){try{return JSON.parse(o)||[]}catch(t){return []}}};var J={stringify(o){return JSON.stringify(o)},parse(o){return typeof o=="object"?JSON.parse(o):{}}};var g={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class o{constructor(t){this.schema=t;}parse(t){return o.parse(t,this.schema)}static parse(t,r){let i={};return Object.entries(t).forEach(([n,e])=>{let a=r[n];typeof e=="object"?i[n]=o.parse(e,a):i[n]=o.parseValueByType(e,a);}),i}static parseValueByType(t,r){if(t!=="undefined")return r===g.keyValueArray?P.parse(t):r===g.objectArray?V.parse(t):r===g.array?j.parse(t):r===g.object?J.parse(t):r===g.number?k.parse(t):r===g.boolean?L.parse(t):t}static stringify(t){let r={};return Object.entries(t).forEach(([i,n])=>{r[i]=o.stringifyValue(n);}),r}static stringifyValue(t){if(Array.isArray(t)){let r=t[0];return typeof r=="object"?this.isKeyValueObject(r)?P.stringify(t):V.stringify(t):j.stringify(t)}return typeof t=="object"?o.stringify(t):""+t}static isKeyValueObject(t){let r=Object.keys(t);return r[0]==="key"&&r[1]==="value"}};var{get:q}=H,T=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),r=jsonToList({delimiter:".",json:t}),i=flatJson({delimiter:".",data:this.options.optionTypes});return r.filter(({key:n})=>!this.options.excludeOptions.includes(n)).map(({key:n,value:e})=>({key:n,value:e,type:i[n]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:r,value:i,type:n})=>{this.program.option(`--${r} <${n}>`,q(this.options.optionTitles,r),i);});}addAction(t){this.program.action(r=>{let i=unflatJson({delimiter:".",data:r}),n=m.parse(i,this.options.optionTypes);t(n);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),r=jsonToList({delimiter:".",json:t}),i=flatJson({delimiter:".",data:this.options.optionTypes}),n=flatJson({delimiter:".",data:this.options.optionTitles});return r.map(({key:e,value:a})=>({key:e,defaultValue:a,type:i[e],title:n[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let r={};for(let{key:i,defaultValue:n,type:e,title:a}of t)e&&a&&(r[i]=(yield this.getActionResult({type:e,message:a,default:n}))||n);return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let n=t,i=u(n,["type"]);return yield input(i)})}actionHandler(t){return p(this,null,function*(){let r=yield this.optionHandler(),i=unflatJson({delimiter:".",data:r}),n=m.parse(i,this.options.optionTypes);t(n);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:tt,writeJson:rt}=_,f=class f extends s{init(){var t,r;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(r=this.program)==null||r.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",f.defaultConfigPath).action(i=>p(this,null,function*(){let{path:n}=i;n||(n=f.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+n),yield rt(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",f.defaultConfigPath);}addAction(t){this.program.action(i=>p(this,[i],function*({config:r=""}){let n;if(r.endsWith(".js")?n=yield import(r):r.endsWith(".json")&&(n=yield tt(r)),!n)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${r}`);t(n);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=join(process.cwd(),"release.json");var A=f;var {merge:nt}=H,at=(i=>(i.prompts="prompts",i.args="args",i.config="config",i))(at||{}),C=class C{constructor(t){this.options=nt({},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,r=u(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 T(y(d({},r),{program:this.program}))),t.includes("config")&&(this.configCommand=new A(y(d({},r),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(y(d({},r),{program:this.program}))));}start(t){var r,i,n,e;(r=this.promptsCommand)==null||r.start(t),(i=this.configCommand)==null||i.start(t),(n=this.argsCommand)==null||n.start(t),(e=this.program)==null||e.parse(process.argv);}};C.DEFAULT_OPTIONS=y(d({},s.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:!1});var w=C,gr=w;
13
13
 
14
14
  export { gr as Cli, w as CommandManager, at as CommandTypes };
15
15
  //# sourceMappingURL=CommandManager.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/CommandManager.ts","../lib/command/command.interface.ts","../lib/options-transformer/paramTypes/array.type.ts","../lib/options-transformer/paramTypes/boolean.type.ts","../lib/options-transformer/paramTypes/key-value-array.type.ts","../lib/options-transformer/paramTypes/number.type.ts","../lib/options-transformer/paramTypes/object-array.type.ts","../lib/options-transformer/paramTypes/object.type.ts","../lib/options-transformer/options-transformer.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","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","join","ConfigCommand","CommandTypes","_CommandManager","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli"],"mappings":"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","file":"CommandManager.mjs","sourcesContent":["// import { merge } from 'lodash'; // 这个怎么解决\nimport _ from 'lodash';\nconst { merge } = _;\nimport { 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';\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}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n 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 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 } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\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: (options: any) => any): void;\n}\n","import { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ 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 jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionsTransformer.parse(jsonOptions, 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\nimport { AbstractCommand, Action } from './command.interface';\nimport _ from 'lodash';\nconst { get } = _;\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\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 = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionsTransformer.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';\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;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(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/CommandManager.ts","../lib/command/command.interface.ts","../lib/options-transformer/paramTypes/array.type.ts","../lib/options-transformer/paramTypes/boolean.type.ts","../lib/options-transformer/paramTypes/key-value-array.type.ts","../lib/options-transformer/paramTypes/number.type.ts","../lib/options-transformer/paramTypes/object-array.type.ts","../lib/options-transformer/paramTypes/object.type.ts","../lib/options-transformer/options-transformer.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","arrayType","v","asTrueValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","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","join","ConfigCommand","CommandTypes","_CommandManager","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli"],"mappings":"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","file":"CommandManager.mjs","sourcesContent":["// import { merge } from 'lodash'; // 这个怎么解决\nimport _ from 'lodash';\nconst { merge } = _;\nimport { 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';\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 = merge({}, 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 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 } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\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: (options: any) => any): void;\n}\n","import { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ 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 jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionsTransformer.parse(jsonOptions, 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\nimport { AbstractCommand, Action } from './command.interface';\nimport _ from 'lodash';\nconst { get } = _;\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\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 = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionsTransformer.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';\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;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var utilsCore = require('@tikkhun/utils-core');
4
- var U = require('lodash');
4
+ var W = require('lodash');
5
5
  var commander = require('commander');
6
6
  var prompts = require('@inquirer/prompts');
7
7
  var tt = require('fs-extra');
@@ -10,17 +10,17 @@ var logger = require('@tikkhun/logger');
10
10
 
11
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
 
13
- var U__default = /*#__PURE__*/_interopDefault(U);
13
+ var W__default = /*#__PURE__*/_interopDefault(W);
14
14
  var tt__default = /*#__PURE__*/_interopDefault(tt);
15
15
 
16
16
  /**
17
17
  @tikkhun/cli-core
18
18
  */
19
- var K=Object.defineProperty,$=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var S=(o,t,r)=>t in o?K(o,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[t]=r,d=(o,t)=>{for(var r in t||(t={}))E.call(t,r)&&S(o,r,t[r]);if(l)for(var r of l(t))L.call(t,r)&&S(o,r,t[r]);return o},y=(o,t)=>$(o,F(t));var u=(o,t)=>{var r={};for(var n in o)E.call(o,n)&&t.indexOf(n)<0&&(r[n]=o[n]);if(o!=null&&l)for(var n of l(o))t.indexOf(n)<0&&L.call(o,n)&&(r[n]=o[n]);return r};var p=(o,t,r)=>new Promise((n,i)=>{var e=c=>{try{b(r.next(c));}catch(j){i(j);}},a=c=>{try{b(r.throw(c));}catch(j){i(j);}},b=c=>c.done?n(c.value):Promise.resolve(c.value).then(e,a);b((r=r.apply(o,t)).next());});var P={stringify(o){return o!=null&&o.length?o.toString():""},parse(o){return o.split(",")}};var H=["true",!0,"1",1],gt=["false",!1,"",0],k={stringify(o){return o.toString()},parse(o){return !!H.includes(o)}};var V={stringify(o){return o!=null&&o.length?o.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(o){return o?o.split(",").map(t=>{if(!t)return;let[r,n]=t.split("=");return {key:r,value:n}}).filter(t=>t):[]}};var N={stringify(o){return o.toString()},parse(o){return Number(o)}};var R={stringify(o){return JSON.stringify(o)},parse(o){try{return JSON.parse(o)||[]}catch(t){return []}}};var J={stringify(o){return JSON.stringify(o)},parse(o){return typeof o=="object"?JSON.parse(o):{}}};var g={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class o{constructor(t){this.schema=t;}parse(t){return o.parse(t,this.schema)}static parse(t,r){let n={};return Object.entries(t).forEach(([i,e])=>{let a=r[i];typeof e=="object"?n[i]=o.parse(e,a):n[i]=o.parseValueByType(e,a);}),n}static parseValueByType(t,r){if(t!=="undefined")return r===g.keyValueArray?V.parse(t):r===g.objectArray?R.parse(t):r===g.array?P.parse(t):r===g.object?J.parse(t):r===g.number?N.parse(t):r===g.boolean?k.parse(t):t}static stringify(t){let r={};return Object.entries(t).forEach(([n,i])=>{r[n]=o.stringifyValue(i);}),r}static stringifyValue(t){if(Array.isArray(t)){let r=t[0];return typeof r=="object"?this.isKeyValueObject(r)?V.stringify(t):R.stringify(t):P.stringify(t)}return typeof t=="object"?o.stringify(t):""+t}static isKeyValueObject(t){let r=Object.keys(t);return r[0]==="key"&&r[1]==="value"}};var{merge:Y}=U__default.default,h=class h{constructor(t){this.options=Y({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=h;var {get:q}=U__default.default,T=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),r=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return r.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:e})=>({key:i,value:e,type:n[i]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:r,value:n,type:i})=>{this.program.option(`--${r} <${i}>`,q(this.options.optionTitles,r),n);});}addAction(t){this.program.action(r=>{let n=utilsCore.unflatJson({delimiter:".",data:r}),i=m.parse(n,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),r=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return r.map(({key:e,value:a})=>({key:e,defaultValue:a,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let r={};for(let{key:n,defaultValue:i,type:e,title:a}of t)e&&a&&(r[n]=(yield this.getActionResult({type:e,message:a,default:i}))||i);return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let i=t,n=u(i,["type"]);return yield prompts.input(n)})}actionHandler(t){return p(this,null,function*(){let r=yield this.optionHandler(),n=utilsCore.unflatJson({delimiter:".",data:r}),i=m.parse(n,this.options.optionTypes);t(i);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:rt,writeJson:ot}=tt__default.default,f=class f extends s{init(){var t,r;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(r=this.program)==null||r.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",f.defaultConfigPath).action(n=>p(this,null,function*(){let{path:i}=n;i||(i=f.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield ot(i,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",f.defaultConfigPath);}addAction(t){this.program.action(n=>p(this,[n],function*({config:r=""}){let i;if(r.endsWith(".js")?i=yield import(r):r.endsWith(".json")&&(i=yield rt(r)),!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${r}`);t(i);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=path.join(process.cwd(),"release.json");var x=f;var {merge:et}=U__default.default,pt=(n=>(n.prompts="prompts",n.args="args",n.config="config",n))(pt||{}),A=class A{constructor(t){this.options=et({},A.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),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 n=this.options,{types:t}=n,r=u(n,["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 T(y(d({},r),{program:this.program}))),t.includes("config")&&(this.configCommand=new x(y(d({},r),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(y(d({},r),{program:this.program}))));}start(t){var r,n,i,e;(r=this.promptsCommand)==null||r.start(t),(n=this.configCommand)==null||n.start(t),(i=this.argsCommand)==null||i.start(t),(e=this.program)==null||e.parse(process.argv);}};A.DEFAULT_OPTIONS=y(d({},s.DEFAULT_OPTIONS),{types:["args"],name:""});var w=A,Tr=w;function Pr(o){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${o.name}`),logger.Logger.log("\u7248\u672C: "+o.version);}function Vr(o){o.logo&&console.log(o.logo),logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${o.name}`),logger.Logger.log("\u7248\u672C: "+o.version);}
19
+ var K=Object.defineProperty,$=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var S=(r,t,o)=>t in r?K(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,d=(r,t)=>{for(var o in t||(t={}))E.call(t,o)&&S(r,o,t[o]);if(l)for(var o of l(t))L.call(t,o)&&S(r,o,t[o]);return r},y=(r,t)=>$(r,F(t));var u=(r,t)=>{var o={};for(var n in r)E.call(r,n)&&t.indexOf(n)<0&&(o[n]=r[n]);if(r!=null&&l)for(var n of l(r))t.indexOf(n)<0&&L.call(r,n)&&(o[n]=r[n]);return o};var p=(r,t,o)=>new Promise((n,i)=>{var e=c=>{try{b(o.next(c));}catch(j){i(j);}},a=c=>{try{b(o.throw(c));}catch(j){i(j);}},b=c=>c.done?n(c.value):Promise.resolve(c.value).then(e,a);b((o=o.apply(r,t)).next());});var P={stringify(r){return r!=null&&r.length?r.toString():""},parse(r){return r.split(",")}};var H=["true",!0,"1",1],gt=["false",!1,"",0],k={stringify(r){return r.toString()},parse(r){return !!H.includes(r)}};var V={stringify(r){return r!=null&&r.length?r.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(r){return r?r.split(",").map(t=>{if(!t)return;let[o,n]=t.split("=");return {key:o,value:n}}).filter(t=>t):[]}};var N={stringify(r){return r.toString()},parse(r){return Number(r)}};var R={stringify(r){return JSON.stringify(r)},parse(r){try{return JSON.parse(r)||[]}catch(t){return []}}};var J={stringify(r){return JSON.stringify(r)},parse(r){return typeof r=="object"?JSON.parse(r):{}}};var g={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class r{constructor(t){this.schema=t;}parse(t){return r.parse(t,this.schema)}static parse(t,o){let n={};return Object.entries(t).forEach(([i,e])=>{let a=o[i];typeof e=="object"?n[i]=r.parse(e,a):n[i]=r.parseValueByType(e,a);}),n}static parseValueByType(t,o){if(t!=="undefined")return o===g.keyValueArray?V.parse(t):o===g.objectArray?R.parse(t):o===g.array?P.parse(t):o===g.object?J.parse(t):o===g.number?N.parse(t):o===g.boolean?k.parse(t):t}static stringify(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=r.stringifyValue(i);}),o}static stringifyValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"?this.isKeyValueObject(o)?V.stringify(t):R.stringify(t):P.stringify(t)}return typeof t=="object"?r.stringify(t):""+t}static isKeyValueObject(t){let o=Object.keys(t);return o[0]==="key"&&o[1]==="value"}};var{merge:U}=W__default.default,h=class h{constructor(t){this.options=U({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=h;var {get:q}=W__default.default,T=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return o.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:e})=>({key:i,value:e,type:n[i]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:n,type:i})=>{this.program.option(`--${o} <${i}>`,q(this.options.optionTitles,o),n);});}addAction(t){this.program.action(o=>{let n=utilsCore.unflatJson({delimiter:".",data:o}),i=m.parse(n,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return o.map(({key:e,value:a})=>({key:e,defaultValue:a,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:n,defaultValue:i,type:e,title:a}of t)e&&a&&(o[n]=(yield this.getActionResult({type:e,message:a,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let i=t,n=u(i,["type"]);return yield prompts.input(n)})}actionHandler(t){return p(this,null,function*(){let o=yield this.optionHandler(),n=utilsCore.unflatJson({delimiter:".",data:o}),i=m.parse(n,this.options.optionTypes);t(i);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:ot,writeJson:rt}=tt__default.default,f=class f extends s{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",f.defaultConfigPath).action(n=>p(this,null,function*(){let{path:i}=n;i||(i=f.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield rt(i,this.options.defaultOptions,{spaces:2}),logger.Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",f.defaultConfigPath);}addAction(t){this.program.action(n=>p(this,[n],function*({config:o=""}){let i;if(o.endsWith(".js")?i=yield import(o):o.endsWith(".json")&&(i=yield ot(o)),!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(i);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=path.join(process.cwd(),"release.json");var x=f;var {merge:et}=W__default.default,pt=(n=>(n.prompts="prompts",n.args="args",n.config="config",n))(pt||{}),A=class A{constructor(t){this.options=et({},A.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 n=this.options,{types:t}=n,o=u(n,["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 T(y(d({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new x(y(d({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(y(d({},o),{program:this.program}))));}start(t){var o,n,i,e;(o=this.promptsCommand)==null||o.start(t),(n=this.configCommand)==null||n.start(t),(i=this.argsCommand)==null||i.start(t),(e=this.program)==null||e.parse(process.argv);}};A.DEFAULT_OPTIONS=y(d({},s.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:!1});var w=A,Oo=w;function Vo(r){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),logger.Logger.log("\u7248\u672C: "+r.version);}function Ro(r){r.logo&&console.log(r.logo),logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),logger.Logger.log("\u7248\u672C: "+r.version);}
20
20
 
21
21
  exports.AbstractCommand = s;
22
22
  exports.ArgsCommand = T;
23
- exports.Cli = Tr;
23
+ exports.Cli = Oo;
24
24
  exports.CommandManager = w;
25
25
  exports.CommandTypes = pt;
26
26
  exports.ConfigCommand = x;
@@ -31,8 +31,8 @@ exports.arrayType = P;
31
31
  exports.asFalseValues = gt;
32
32
  exports.asTrueValues = H;
33
33
  exports.booleanType = k;
34
- exports.echo = Vr;
35
- exports.echoPackage = Pr;
34
+ exports.echo = Ro;
35
+ exports.echoPackage = Vo;
36
36
  exports.keyValueArrayType = V;
37
37
  exports.numberType = N;
38
38
  exports.objectArrayType = R;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/command/ArgsCommand.ts","../lib/options-transformer/paramTypes/array.type.ts","../lib/options-transformer/paramTypes/boolean.type.ts","../lib/options-transformer/paramTypes/key-value-array.type.ts","../lib/options-transformer/paramTypes/number.type.ts","../lib/options-transformer/paramTypes/object-array.type.ts","../lib/options-transformer/paramTypes/object.type.ts","../lib/options-transformer/options-transformer.ts","../lib/command/command.interface.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["arrayType","v","asTrueValues","asFalseValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","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","join","ConfigCommand","CommandTypes","_CommandManager","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.js","sourcesContent":["import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ 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 jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionsTransformer.parse(jsonOptions, 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 { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\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: (options: any) => any): 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\nimport { AbstractCommand, Action } from './command.interface';\nimport _ from 'lodash';\nconst { get } = _;\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\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 = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionsTransformer.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';\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;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(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 { merge } from 'lodash'; // 这个怎么解决\nimport _ from 'lodash';\nconst { merge } = _;\nimport { 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';\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}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n 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 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/ArgsCommand.ts","../lib/options-transformer/paramTypes/array.type.ts","../lib/options-transformer/paramTypes/boolean.type.ts","../lib/options-transformer/paramTypes/key-value-array.type.ts","../lib/options-transformer/paramTypes/number.type.ts","../lib/options-transformer/paramTypes/object-array.type.ts","../lib/options-transformer/paramTypes/object.type.ts","../lib/options-transformer/options-transformer.ts","../lib/command/command.interface.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["arrayType","v","asTrueValues","asFalseValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","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","join","ConfigCommand","CommandTypes","_CommandManager","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.js","sourcesContent":["import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ 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 jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionsTransformer.parse(jsonOptions, 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 { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\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: (options: any) => any): 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\nimport { AbstractCommand, Action } from './command.interface';\nimport _ from 'lodash';\nconst { get } = _;\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\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 = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionsTransformer.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';\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;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(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 { merge } from 'lodash'; // 这个怎么解决\nimport _ from 'lodash';\nconst { merge } = _;\nimport { 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';\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 = merge({}, 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 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 { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
2
- import U from 'lodash';
2
+ import W from 'lodash';
3
3
  import { createCommand } from 'commander';
4
4
  import { input } from '@inquirer/prompts';
5
5
  import tt from 'fs-extra';
@@ -9,8 +9,8 @@ import { Logger } from '@tikkhun/logger';
9
9
  /**
10
10
  @tikkhun/cli-core
11
11
  */
12
- var K=Object.defineProperty,$=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var S=(o,t,r)=>t in o?K(o,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[t]=r,d=(o,t)=>{for(var r in t||(t={}))E.call(t,r)&&S(o,r,t[r]);if(l)for(var r of l(t))L.call(t,r)&&S(o,r,t[r]);return o},y=(o,t)=>$(o,F(t));var u=(o,t)=>{var r={};for(var n in o)E.call(o,n)&&t.indexOf(n)<0&&(r[n]=o[n]);if(o!=null&&l)for(var n of l(o))t.indexOf(n)<0&&L.call(o,n)&&(r[n]=o[n]);return r};var p=(o,t,r)=>new Promise((n,i)=>{var e=c=>{try{b(r.next(c));}catch(j){i(j);}},a=c=>{try{b(r.throw(c));}catch(j){i(j);}},b=c=>c.done?n(c.value):Promise.resolve(c.value).then(e,a);b((r=r.apply(o,t)).next());});var P={stringify(o){return o!=null&&o.length?o.toString():""},parse(o){return o.split(",")}};var H=["true",!0,"1",1],gt=["false",!1,"",0],k={stringify(o){return o.toString()},parse(o){return !!H.includes(o)}};var V={stringify(o){return o!=null&&o.length?o.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(o){return o?o.split(",").map(t=>{if(!t)return;let[r,n]=t.split("=");return {key:r,value:n}}).filter(t=>t):[]}};var N={stringify(o){return o.toString()},parse(o){return Number(o)}};var R={stringify(o){return JSON.stringify(o)},parse(o){try{return JSON.parse(o)||[]}catch(t){return []}}};var J={stringify(o){return JSON.stringify(o)},parse(o){return typeof o=="object"?JSON.parse(o):{}}};var g={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class o{constructor(t){this.schema=t;}parse(t){return o.parse(t,this.schema)}static parse(t,r){let n={};return Object.entries(t).forEach(([i,e])=>{let a=r[i];typeof e=="object"?n[i]=o.parse(e,a):n[i]=o.parseValueByType(e,a);}),n}static parseValueByType(t,r){if(t!=="undefined")return r===g.keyValueArray?V.parse(t):r===g.objectArray?R.parse(t):r===g.array?P.parse(t):r===g.object?J.parse(t):r===g.number?N.parse(t):r===g.boolean?k.parse(t):t}static stringify(t){let r={};return Object.entries(t).forEach(([n,i])=>{r[n]=o.stringifyValue(i);}),r}static stringifyValue(t){if(Array.isArray(t)){let r=t[0];return typeof r=="object"?this.isKeyValueObject(r)?V.stringify(t):R.stringify(t):P.stringify(t)}return typeof t=="object"?o.stringify(t):""+t}static isKeyValueObject(t){let r=Object.keys(t);return r[0]==="key"&&r[1]==="value"}};var{merge:Y}=U,h=class h{constructor(t){this.options=Y({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=h;var {get:q}=U,T=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),r=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes});return r.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:e})=>({key:i,value:e,type:n[i]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:r,value:n,type:i})=>{this.program.option(`--${r} <${i}>`,q(this.options.optionTitles,r),n);});}addAction(t){this.program.action(r=>{let n=unflatJson({delimiter:".",data:r}),i=m.parse(n,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),r=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes}),i=flatJson({delimiter:".",data:this.options.optionTitles});return r.map(({key:e,value:a})=>({key:e,defaultValue:a,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let r={};for(let{key:n,defaultValue:i,type:e,title:a}of t)e&&a&&(r[n]=(yield this.getActionResult({type:e,message:a,default:i}))||i);return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let i=t,n=u(i,["type"]);return yield input(n)})}actionHandler(t){return p(this,null,function*(){let r=yield this.optionHandler(),n=unflatJson({delimiter:".",data:r}),i=m.parse(n,this.options.optionTypes);t(i);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:rt,writeJson:ot}=tt,f=class f extends s{init(){var t,r;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(r=this.program)==null||r.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",f.defaultConfigPath).action(n=>p(this,null,function*(){let{path:i}=n;i||(i=f.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield ot(i,this.options.defaultOptions,{spaces:2}),Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",f.defaultConfigPath);}addAction(t){this.program.action(n=>p(this,[n],function*({config:r=""}){let i;if(r.endsWith(".js")?i=yield import(r):r.endsWith(".json")&&(i=yield rt(r)),!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${r}`);t(i);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=join(process.cwd(),"release.json");var x=f;var {merge:et}=U,pt=(n=>(n.prompts="prompts",n.args="args",n.config="config",n))(pt||{}),A=class A{constructor(t){this.options=et({},A.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),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 n=this.options,{types:t}=n,r=u(n,["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 T(y(d({},r),{program:this.program}))),t.includes("config")&&(this.configCommand=new x(y(d({},r),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(y(d({},r),{program:this.program}))));}start(t){var r,n,i,e;(r=this.promptsCommand)==null||r.start(t),(n=this.configCommand)==null||n.start(t),(i=this.argsCommand)==null||i.start(t),(e=this.program)==null||e.parse(process.argv);}};A.DEFAULT_OPTIONS=y(d({},s.DEFAULT_OPTIONS),{types:["args"],name:""});var w=A,Tr=w;function Pr(o){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${o.name}`),Logger.log("\u7248\u672C: "+o.version);}function Vr(o){o.logo&&console.log(o.logo),Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${o.name}`),Logger.log("\u7248\u672C: "+o.version);}
12
+ var K=Object.defineProperty,$=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var S=(r,t,o)=>t in r?K(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,d=(r,t)=>{for(var o in t||(t={}))E.call(t,o)&&S(r,o,t[o]);if(l)for(var o of l(t))L.call(t,o)&&S(r,o,t[o]);return r},y=(r,t)=>$(r,F(t));var u=(r,t)=>{var o={};for(var n in r)E.call(r,n)&&t.indexOf(n)<0&&(o[n]=r[n]);if(r!=null&&l)for(var n of l(r))t.indexOf(n)<0&&L.call(r,n)&&(o[n]=r[n]);return o};var p=(r,t,o)=>new Promise((n,i)=>{var e=c=>{try{b(o.next(c));}catch(j){i(j);}},a=c=>{try{b(o.throw(c));}catch(j){i(j);}},b=c=>c.done?n(c.value):Promise.resolve(c.value).then(e,a);b((o=o.apply(r,t)).next());});var P={stringify(r){return r!=null&&r.length?r.toString():""},parse(r){return r.split(",")}};var H=["true",!0,"1",1],gt=["false",!1,"",0],k={stringify(r){return r.toString()},parse(r){return !!H.includes(r)}};var V={stringify(r){return r!=null&&r.length?r.map(t=>`${t==null?void 0:t.key}=${t==null?void 0:t.value}`).join(","):""},parse(r){return r?r.split(",").map(t=>{if(!t)return;let[o,n]=t.split("=");return {key:o,value:n}}).filter(t=>t):[]}};var N={stringify(r){return r.toString()},parse(r){return Number(r)}};var R={stringify(r){return JSON.stringify(r)},parse(r){try{return JSON.parse(r)||[]}catch(t){return []}}};var J={stringify(r){return JSON.stringify(r)},parse(r){return typeof r=="object"?JSON.parse(r):{}}};var g={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},m=class r{constructor(t){this.schema=t;}parse(t){return r.parse(t,this.schema)}static parse(t,o){let n={};return Object.entries(t).forEach(([i,e])=>{let a=o[i];typeof e=="object"?n[i]=r.parse(e,a):n[i]=r.parseValueByType(e,a);}),n}static parseValueByType(t,o){if(t!=="undefined")return o===g.keyValueArray?V.parse(t):o===g.objectArray?R.parse(t):o===g.array?P.parse(t):o===g.object?J.parse(t):o===g.number?N.parse(t):o===g.boolean?k.parse(t):t}static stringify(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=r.stringifyValue(i);}),o}static stringifyValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"?this.isKeyValueObject(o)?V.stringify(t):R.stringify(t):P.stringify(t)}return typeof t=="object"?r.stringify(t):""+t}static isKeyValueObject(t){let o=Object.keys(t);return o[0]==="key"&&o[1]==="value"}};var{merge:U}=W,h=class h{constructor(t){this.options=U({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var s=h;var {get:q}=W,T=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes});return o.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:e})=>({key:i,value:e,type:n[i]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:n,type:i})=>{this.program.option(`--${o} <${i}>`,q(this.options.optionTitles,o),n);});}addAction(t){this.program.action(o=>{let n=unflatJson({delimiter:".",data:o}),i=m.parse(n,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var O=class extends s{getOptions(){let t=m.stringify(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes}),i=flatJson({delimiter:".",data:this.options.optionTitles});return o.map(({key:e,value:a})=>({key:e,defaultValue:a,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:n,defaultValue:i,type:e,title:a}of t)e&&a&&(o[n]=(yield this.getActionResult({type:e,message:a,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let i=t,n=u(i,["type"]);return yield input(n)})}actionHandler(t){return p(this,null,function*(){let o=yield this.optionHandler(),n=unflatJson({delimiter:".",data:o}),i=m.parse(n,this.options.optionTypes);t(i);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:ot,writeJson:rt}=tt,f=class f extends s{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",f.defaultConfigPath).action(n=>p(this,null,function*(){let{path:i}=n;i||(i=f.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield rt(i,this.options.defaultOptions,{spaces:2}),Logger.log("[\u5B8C\u6BD5] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i);})),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",f.defaultConfigPath);}addAction(t){this.program.action(n=>p(this,[n],function*({config:o=""}){let i;if(o.endsWith(".js")?i=yield import(o):o.endsWith(".json")&&(i=yield ot(o)),!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(i);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};f.defaultConfigPath=join(process.cwd(),"release.json");var x=f;var {merge:et}=W,pt=(n=>(n.prompts="prompts",n.args="args",n.config="config",n))(pt||{}),A=class A{constructor(t){this.options=et({},A.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 n=this.options,{types:t}=n,o=u(n,["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 T(y(d({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new x(y(d({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new O(y(d({},o),{program:this.program}))));}start(t){var o,n,i,e;(o=this.promptsCommand)==null||o.start(t),(n=this.configCommand)==null||n.start(t),(i=this.argsCommand)==null||i.start(t),(e=this.program)==null||e.parse(process.argv);}};A.DEFAULT_OPTIONS=y(d({},s.DEFAULT_OPTIONS),{name:"",types:["args"],immediatelyWelcome:!1});var w=A,Oo=w;function Vo(r){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),Logger.log("\u7248\u672C: "+r.version);}function Ro(r){r.logo&&console.log(r.logo),Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${r.name}`),Logger.log("\u7248\u672C: "+r.version);}
13
13
 
14
- export { s as AbstractCommand, T as ArgsCommand, Tr as Cli, w as CommandManager, pt as CommandTypes, x as ConfigCommand, m as OptionsTransformer, O as PromptsCommand, g as TYPES, P as arrayType, gt as asFalseValues, H as asTrueValues, k as booleanType, Vr as echo, Pr as echoPackage, V as keyValueArrayType, N as numberType, R as objectArrayType, J as objectType };
14
+ export { s as AbstractCommand, T as ArgsCommand, Oo as Cli, w as CommandManager, pt as CommandTypes, x as ConfigCommand, m as OptionsTransformer, O as PromptsCommand, g as TYPES, P as arrayType, gt as asFalseValues, H as asTrueValues, k as booleanType, Ro as echo, Vo as echoPackage, V as keyValueArrayType, N as numberType, R as objectArrayType, J as objectType };
15
15
  //# sourceMappingURL=index.mjs.map
16
16
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/command/ArgsCommand.ts","../lib/options-transformer/paramTypes/array.type.ts","../lib/options-transformer/paramTypes/boolean.type.ts","../lib/options-transformer/paramTypes/key-value-array.type.ts","../lib/options-transformer/paramTypes/number.type.ts","../lib/options-transformer/paramTypes/object-array.type.ts","../lib/options-transformer/paramTypes/object.type.ts","../lib/options-transformer/options-transformer.ts","../lib/command/command.interface.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["arrayType","v","asTrueValues","asFalseValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","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","join","ConfigCommand","CommandTypes","_CommandManager","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.mjs","sourcesContent":["import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ 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 jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionsTransformer.parse(jsonOptions, 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 { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\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: (options: any) => any): 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\nimport { AbstractCommand, Action } from './command.interface';\nimport _ from 'lodash';\nconst { get } = _;\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\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 = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionsTransformer.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';\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;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(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 { merge } from 'lodash'; // 这个怎么解决\nimport _ from 'lodash';\nconst { merge } = _;\nimport { 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';\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}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge({}, CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n 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 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/ArgsCommand.ts","../lib/options-transformer/paramTypes/array.type.ts","../lib/options-transformer/paramTypes/boolean.type.ts","../lib/options-transformer/paramTypes/key-value-array.type.ts","../lib/options-transformer/paramTypes/number.type.ts","../lib/options-transformer/paramTypes/object-array.type.ts","../lib/options-transformer/paramTypes/object.type.ts","../lib/options-transformer/options-transformer.ts","../lib/command/command.interface.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["arrayType","v","asTrueValues","asFalseValues","booleanType","value","keyValueArrayType","item","strItem","key","i","numberType","objectArrayType","error","objectType","TYPES","OptionsTransformer","_OptionsTransformer","schema","obj","_obj","type","item1","keys","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","createCommand","action","jsonOptions","unflatJson","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","join","ConfigCommand","CommandTypes","_CommandManager","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.mjs","sourcesContent":["import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer } from '../options-transformer/options-transformer';\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatJson({ 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 jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionsTransformer.parse(jsonOptions, 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 { ParamType } from './param-type.interface';\n\nexport interface KeyValueItem {\n key: string;\n value: string;\n}\nexport const arrayType: ParamType = {\n // [1,2,3]=> 1,2,3\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.toString();\n },\n parse(v: string) {\n return v.split(',');\n },\n};\n","import { ParamType } from './param-type.interface';\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport const booleanType: ParamType = {\n stringify(value: boolean): string {\n return value.toString();\n },\n parse(value: string) {\n if (asTrueValues.includes(value)) return true;\n return false;\n },\n};\n","import { ParamType } from './param-type.interface';\n\ninterface KeyValueItem {\n key: string;\n value: string;\n}\nexport const keyValueArrayType: ParamType = {\n // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n stringify(v: any): string {\n if (!v?.length) {\n return '';\n }\n return v.map((item: KeyValueItem) => `${item?.key}=${item?.value}`).join(',');\n },\n parse(value: string) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const numberType: ParamType = {\n stringify(value: any): string {\n return value.toString();\n },\n parse(value: string) {\n return Number(value);\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectArrayType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(v: string) {\n try {\n return JSON.parse(v) || [];\n } catch (error) {\n return [];\n }\n },\n};\n","import { ParamType } from './param-type.interface';\n\nexport const objectType: ParamType = {\n stringify(v: any): string {\n return JSON.stringify(v);\n },\n parse(value: string) {\n return typeof value === 'object' ? JSON.parse(value) : {};\n },\n};\n","import { arrayType, booleanType, keyValueArrayType, numberType, objectArrayType, objectType } from './paramTypes';\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n objectArray: 'objectArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\n\nexport class OptionsTransformer {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n parse(obj: Record<string, any>) {\n return OptionsTransformer.parse(obj, this.schema);\n }\n\n static parse(obj: Record<string, any>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionsTransformer.parse(value, type);\n } else {\n _obj[key] = OptionsTransformer.parseValueByType(value as string, type);\n }\n });\n return _obj;\n }\n private static parseValueByType(value: string, type: string) {\n if (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n return keyValueArrayType.parse(value);\n }\n if (type === TYPES.objectArray) {\n return objectArrayType.parse(value);\n }\n if (type === TYPES.array) {\n return arrayType.parse(value);\n }\n if (type === TYPES.object) {\n return objectType.parse(value);\n }\n if (type === TYPES.number) {\n return numberType.parse(value);\n }\n if (type === TYPES.boolean) {\n return booleanType.parse(value);\n }\n return value;\n }\n static stringify(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionsTransformer.stringifyValue(value);\n });\n return _obj;\n }\n\n private static stringifyValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object') {\n const isKeyValueArray = this.isKeyValueObject(item1);\n if (isKeyValueArray) {\n return keyValueArrayType.stringify(value);\n }\n return objectArrayType.stringify(value);\n }\n return arrayType.stringify(value);\n }\n if (typeof value === 'object') {\n return OptionsTransformer.stringify(value);\n }\n return '' + value;\n }\n private static isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\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: (options: any) => any): 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionsTransformer, TYPES } from '../options-transformer/options-transformer';\nimport { AbstractCommand, Action } from './command.interface';\nimport _ from 'lodash';\nconst { get } = _;\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 = OptionsTransformer.stringify(this.options.defaultOptions);\n // 默认选项\n const flattedStringifyDefaultOptionList = jsonToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatJson({\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 = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionsTransformer.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';\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;\n if (config.endsWith('.js')) {\n options = await import(config);\n } else if (config.endsWith('.json')) {\n options = await readJson(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 { merge } from 'lodash'; // 这个怎么解决\nimport _ from 'lodash';\nconst { merge } = _;\nimport { 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';\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 = merge({}, 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 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.17",
3
+ "version": "0.0.18",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",