@tikkhun/cli-core 0.0.7 → 0.0.8

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.
Files changed (44) hide show
  1. package/README.md +6 -3
  2. package/dist/CommandManager.d.mts +6 -2
  3. package/dist/CommandManager.d.ts +6 -2
  4. package/dist/CommandManager.js +8 -6
  5. package/dist/CommandManager.js.map +1 -1
  6. package/dist/CommandManager.mjs +5 -3
  7. package/dist/CommandManager.mjs.map +1 -1
  8. package/dist/command/ArgsCommand.d.mts +1 -0
  9. package/dist/command/ArgsCommand.d.ts +1 -0
  10. package/dist/command/ArgsCommand.js +4 -4
  11. package/dist/command/ArgsCommand.js.map +1 -1
  12. package/dist/command/ArgsCommand.mjs +3 -3
  13. package/dist/command/ArgsCommand.mjs.map +1 -1
  14. package/dist/command/ConfigCommand.d.mts +12 -0
  15. package/dist/command/ConfigCommand.d.ts +12 -0
  16. package/dist/command/ConfigCommand.js +19 -0
  17. package/dist/command/ConfigCommand.js.map +1 -0
  18. package/dist/command/ConfigCommand.mjs +13 -0
  19. package/dist/command/ConfigCommand.mjs.map +1 -0
  20. package/dist/command/PromptsCommand.d.mts +4 -1
  21. package/dist/command/PromptsCommand.d.ts +4 -1
  22. package/dist/command/PromptsCommand.js +4 -4
  23. package/dist/command/PromptsCommand.js.map +1 -1
  24. package/dist/command/PromptsCommand.mjs +3 -3
  25. package/dist/command/PromptsCommand.mjs.map +1 -1
  26. package/dist/command/command.interface.d.mts +3 -0
  27. package/dist/command/command.interface.d.ts +3 -0
  28. package/dist/command/command.interface.js +2 -2
  29. package/dist/command/command.interface.js.map +1 -1
  30. package/dist/command/command.interface.mjs +2 -2
  31. package/dist/command/command.interface.mjs.map +1 -1
  32. package/dist/command/index.d.mts +1 -0
  33. package/dist/command/index.d.ts +1 -0
  34. package/dist/command/index.js +9 -6
  35. package/dist/command/index.js.map +1 -1
  36. package/dist/command/index.mjs +5 -3
  37. package/dist/command/index.mjs.map +1 -1
  38. package/dist/index.d.mts +1 -0
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.js +17 -14
  41. package/dist/index.js.map +1 -1
  42. package/dist/index.mjs +5 -3
  43. package/dist/index.mjs.map +1 -1
  44. package/package.json +3 -1
@@ -0,0 +1,12 @@
1
+ import { AbstractCommand, Action } from './command.interface.mjs';
2
+ import { Command } from 'commander';
3
+
4
+ declare class ConfigCommand extends AbstractCommand {
5
+ program: Command | undefined;
6
+ init(): void;
7
+ private addOptions;
8
+ private addAction;
9
+ start(action: Action): void;
10
+ }
11
+
12
+ export { ConfigCommand };
@@ -0,0 +1,12 @@
1
+ import { AbstractCommand, Action } from './command.interface.js';
2
+ import { Command } from 'commander';
3
+
4
+ declare class ConfigCommand extends AbstractCommand {
5
+ program: Command | undefined;
6
+ init(): void;
7
+ private addOptions;
8
+ private addAction;
9
+ start(action: Action): void;
10
+ }
11
+
12
+ export { ConfigCommand };
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var l = require('lodash');
4
+ var commander = require('commander');
5
+ var fsExtra = require('fs-extra');
6
+ var path = require('path');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var l__default = /*#__PURE__*/_interopDefault(l);
11
+
12
+ /**
13
+ @tikkhun/cli-core
14
+ */
15
+ var m=(e,o,t)=>new Promise((c,i)=>{var f=r=>{try{a(t.next(r));}catch(p){i(p);}},g=r=>{try{a(t.throw(r));}catch(p){i(p);}},a=r=>r.done?c(r.value):Promise.resolve(r.value).then(f,g);a((t=t.apply(e,o)).next());});var{merge:O}=l__default.default,s=class s{constructor(o){this.options=O({},s.DEFAULT_OPTIONS,o),this.init();}};s.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var n=s;var d=class extends n{init(){var o;this.program=((o=this.options.program)==null?void 0:o.command("config"))||commander.createCommand(),this.addOptions();}addOptions(){var o;(o=this.program)==null||o.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",path.join(process.cwd(),"release.json"));}addAction(o){this.program.action(c=>m(this,[c],function*({config:t=""}){let i;if(t.endsWith(".js")?i=yield import(t):t.endsWith(".json")&&(i=yield fsExtra.readJson(t)),!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${t}`);o(i);}));}start(o){this.addAction(o),this.options.program||this.program.parse(process.argv);}};
16
+
17
+ exports.ConfigCommand = d;
18
+ //# sourceMappingURL=ConfigCommand.js.map
19
+ //# sourceMappingURL=ConfigCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","ConfigCommand","_a","createCommand","join","action","_0","__async","config","readJson"],"mappings":";;;;;;;;;;;;;;AACA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CACA,GAAM,CAAE,KAAAA,CAAAA,CAAM,EAAIC,kBAcIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAYpC,WAAYC,CAAAA,CAAAA,CAAmC,CAE7C,IAAK,CAAA,OAAA,CAAUH,EAAM,EAAC,CAAGE,CAAgB,CAAA,eAAA,CAAiBC,CAAO,CACjE,CAAA,IAAA,CAAK,OACP,CAGF,EAnBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAS,CAAA,KAAA,CAAA,CACT,QAAS,EACT,CAAA,WAAA,CAAa,GACb,cAAgB,CAAA,GAChB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EACb,CAAA,YAAA,CAAc,EAChB,CAAA,CATK,IAAeE,CAAfF,CAAAA,CAAAA,CCTMG,IAAAA,CAAAA,CAAN,cAA4BD,CAAgB,CAEjD,MAAa,CATf,IAAAE,EAWI,IAAK,CAAA,OAAA,CAAA,CAAA,CAAUA,EAAA,IAAK,CAAA,OAAA,CAAQ,UAAb,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAsB,QAAQ,QAAaC,CAAAA,GAAAA,uBAAAA,GAC1D,IAAK,CAAA,UAAA,GACP,CACQ,YAAa,CAdvB,IAAAD,GAeIA,CAAA,CAAA,IAAA,CAAK,UAAL,IAAAA,EAAAA,CAAAA,CAAc,MAAO,CAAA,sBAAA,CAAwB,2BAAQE,SAAK,CAAA,OAAA,CAAQ,KAAO,CAAA,cAAc,GACzF,CACQ,SAAA,CAAUC,CAAgB,CAAA,CAChC,KAAK,OAAS,CAAA,MAAA,CAAcC,GAAoBC,CAAA,CAAA,IAAA,CAAA,CAApBD,GAAoB,UAApB,CAAE,OAAAE,CAAS,CAAA,EAAG,EAAM,CAC9C,IAAIT,EAMJ,GALIS,CAAAA,CAAO,SAAS,KAAK,CAAA,CACvBT,CAAU,CAAA,MAAM,OAAOS,CACdA,CAAAA,CAAAA,CAAAA,CAAO,SAAS,OAAO,CAAA,GAChCT,EAAU,MAAMU,gBAAAA,CAASD,CAAM,CAE7B,CAAA,CAAA,CAACT,EACH,MAAM,IAAI,MAAM,CAAaS,4DAAAA,EAAAA,CAAM,EAAE,CAGvCH,CAAAA,CAAAA,CAAON,CAAO,EAChB,EAAC,EACH,CACA,MAAMM,CAAgB,CAAA,CACpB,KAAK,SAAUA,CAAAA,CAAM,EAChB,IAAK,CAAA,OAAA,CAAQ,SAChB,IAAK,CAAA,OAAA,CAAS,MAAM,OAAQ,CAAA,IAAI,EAEpC,CACF","file":"ConfigCommand.js","sourcesContent":["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 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 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nimport { readJson } from 'fs-extra';\nimport { join } from 'path';\nexport class ConfigCommand extends AbstractCommand {\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 this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', join(process.cwd(), 'release.json'));\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"]}
@@ -0,0 +1,13 @@
1
+ import l from 'lodash';
2
+ import { createCommand } from 'commander';
3
+ import { readJson } from 'fs-extra';
4
+ import { join } from 'path';
5
+
6
+ /**
7
+ @tikkhun/cli-core
8
+ */
9
+ var m=(e,o,t)=>new Promise((c,i)=>{var f=r=>{try{a(t.next(r));}catch(p){i(p);}},g=r=>{try{a(t.throw(r));}catch(p){i(p);}},a=r=>r.done?c(r.value):Promise.resolve(r.value).then(f,g);a((t=t.apply(e,o)).next());});var{merge:O}=l,s=class s{constructor(o){this.options=O({},s.DEFAULT_OPTIONS,o),this.init();}};s.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var n=s;var d=class extends n{init(){var o;this.program=((o=this.options.program)==null?void 0:o.command("config"))||createCommand(),this.addOptions();}addOptions(){var o;(o=this.program)==null||o.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",join(process.cwd(),"release.json"));}addAction(o){this.program.action(c=>m(this,[c],function*({config:t=""}){let i;if(t.endsWith(".js")?i=yield import(t):t.endsWith(".json")&&(i=yield readJson(t)),!i)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${t}`);o(i);}));}start(o){this.addAction(o),this.options.program||this.program.parse(process.argv);}};
10
+
11
+ export { d as ConfigCommand };
12
+ //# sourceMappingURL=ConfigCommand.mjs.map
13
+ //# sourceMappingURL=ConfigCommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","ConfigCommand","_a","createCommand","join","action","_0","__async","config","readJson"],"mappings":";;;;;;;;AACA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CACA,GAAM,CAAE,KAAAA,CAAAA,CAAM,EAAIC,CAcIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAYpC,WAAYC,CAAAA,CAAAA,CAAmC,CAE7C,IAAK,CAAA,OAAA,CAAUH,EAAM,EAAC,CAAGE,CAAgB,CAAA,eAAA,CAAiBC,CAAO,CACjE,CAAA,IAAA,CAAK,OACP,CAGF,EAnBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAS,CAAA,KAAA,CAAA,CACT,QAAS,EACT,CAAA,WAAA,CAAa,GACb,cAAgB,CAAA,GAChB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EACb,CAAA,YAAA,CAAc,EAChB,CAAA,CATK,IAAeE,CAAfF,CAAAA,CAAAA,CCTMG,IAAAA,CAAAA,CAAN,cAA4BD,CAAgB,CAEjD,MAAa,CATf,IAAAE,EAWI,IAAK,CAAA,OAAA,CAAA,CAAA,CAAUA,EAAA,IAAK,CAAA,OAAA,CAAQ,UAAb,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAsB,QAAQ,QAAaC,CAAAA,GAAAA,aAAAA,GAC1D,IAAK,CAAA,UAAA,GACP,CACQ,YAAa,CAdvB,IAAAD,GAeIA,CAAA,CAAA,IAAA,CAAK,UAAL,IAAAA,EAAAA,CAAAA,CAAc,MAAO,CAAA,sBAAA,CAAwB,2BAAQE,IAAK,CAAA,OAAA,CAAQ,KAAO,CAAA,cAAc,GACzF,CACQ,SAAA,CAAUC,CAAgB,CAAA,CAChC,KAAK,OAAS,CAAA,MAAA,CAAcC,GAAoBC,CAAA,CAAA,IAAA,CAAA,CAApBD,GAAoB,UAApB,CAAE,OAAAE,CAAS,CAAA,EAAG,EAAM,CAC9C,IAAIT,EAMJ,GALIS,CAAAA,CAAO,SAAS,KAAK,CAAA,CACvBT,CAAU,CAAA,MAAM,OAAOS,CACdA,CAAAA,CAAAA,CAAAA,CAAO,SAAS,OAAO,CAAA,GAChCT,EAAU,MAAMU,QAAAA,CAASD,CAAM,CAE7B,CAAA,CAAA,CAACT,EACH,MAAM,IAAI,MAAM,CAAaS,4DAAAA,EAAAA,CAAM,EAAE,CAGvCH,CAAAA,CAAAA,CAAON,CAAO,EAChB,EAAC,EACH,CACA,MAAMM,CAAgB,CAAA,CACpB,KAAK,SAAUA,CAAAA,CAAM,EAChB,IAAK,CAAA,OAAA,CAAQ,SAChB,IAAK,CAAA,OAAA,CAAS,MAAM,OAAQ,CAAA,IAAI,EAEpC,CACF","file":"ConfigCommand.mjs","sourcesContent":["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 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 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nimport { readJson } from 'fs-extra';\nimport { join } from 'path';\nexport class ConfigCommand extends AbstractCommand {\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 this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', join(process.cwd(), 'release.json'));\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,10 +1,13 @@
1
1
  import { TYPES } from '../OptionHandler.mjs';
2
2
  import { AbstractCommand, Action } from './command.interface.mjs';
3
+ import 'commander';
3
4
 
4
5
  declare class PromptsCommand extends AbstractCommand {
5
- program: any;
6
+ command: any;
7
+ optionHandler: any;
6
8
  init(): void;
7
9
  private getActionResult;
10
+ private actionHandler;
8
11
  start(action: Action): Promise<void>;
9
12
  }
10
13
  interface GetActionResultOptions {
@@ -1,10 +1,13 @@
1
1
  import { TYPES } from '../OptionHandler.js';
2
2
  import { AbstractCommand, Action } from './command.interface.js';
3
+ import 'commander';
3
4
 
4
5
  declare class PromptsCommand extends AbstractCommand {
5
- program: any;
6
+ command: any;
7
+ optionHandler: any;
6
8
  init(): void;
7
9
  private getActionResult;
10
+ private actionHandler;
8
11
  start(action: Action): Promise<void>;
9
12
  }
10
13
  interface GetActionResultOptions {
@@ -2,17 +2,17 @@
2
2
 
3
3
  var prompts = require('@inquirer/prompts');
4
4
  var utilsCore = require('@tikkhun/utils-core');
5
- var S = require('lodash');
5
+ var A = require('lodash');
6
6
 
7
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
9
- var S__default = /*#__PURE__*/_interopDefault(S);
9
+ var A__default = /*#__PURE__*/_interopDefault(A);
10
10
 
11
11
  /**
12
12
  @tikkhun/cli-core
13
13
  */
14
- var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable;var m=(r,t)=>{var n={};for(var e in r)b.call(r,e)&&t.indexOf(e)<0&&(n[e]=r[e]);if(r!=null&&g)for(var e of g(r))t.indexOf(e)<0&&h.call(r,e)&&(n[e]=r[e]);return n};var y=(r,t,n)=>new Promise((e,o)=>{var i=s=>{try{c(n.next(s));}catch(d){o(d);}},a=s=>{try{c(n.throw(s));}catch(d){o(d);}},c=s=>s.done?e(s.value):Promise.resolve(s.value).then(i,a);c((n=n.apply(r,t)).next());});var p={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},R=["true",!0,"1",1];var u=class r{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===p.array?t.split(","):n===p.object?JSON.parse(t):n===p.keyValueArray?t?t.split(",").map(e=>{if(!e)return;let[o,i]=e.split("=");return {key:o,value:i}}).filter(e=>e):[]:n===p.number?Number(t):n===p.boolean?!!R.includes(t):t}static toType(t,n){let e={};return Object.entries(t).forEach(([o,i])=>{let a=n[o];typeof i=="object"?e[o]=r.toType(i,a):e[o]=r.getTypeValue(i,a);}),e}toType(t){return r.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([e,o])=>{n[e]=r.toStringValue(o);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(e=>`${e.key}=${e.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:x}=S__default.default,f=class f{constructor(t){this.options=x({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var l=f;var O=class extends l{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),e=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>y(this,null,function*(){let o={};for(let{key:i,value:a}of t){let c=n[i];if(!c)continue;let s=e[i];s&&(o[i]=(yield this.getActionResult({type:c,message:s,default:a}))||a);}return o});}getActionResult(t){return y(this,null,function*(){let o=t,e=m(o,["type"]);return yield prompts.input(e)})}start(t){return y(this,null,function*(){let n=yield this.program(),e=utilsCore.unflatJson({delimiter:".",data:n}),o=u.toType(e,this.options.optionTypes);t(o);})}};
14
+ var m=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var g=(e,t)=>{var n={};for(var o in e)O.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&m)for(var o of m(e))t.indexOf(o)<0&&b.call(e,o)&&(n[o]=e[o]);return n};var p=(e,t,n)=>new Promise((o,r)=>{var i=s=>{try{c(n.next(s));}catch(u){r(u);}},a=s=>{try{c(n.throw(s));}catch(u){r(u);}},c=s=>s.done?o(s.value):Promise.resolve(s.value).then(i,a);c((n=n.apply(e,t)).next());});var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},R=["true",!0,"1",1];var y=class e{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===d.array?t.split(","):n===d.object?JSON.parse(t):n===d.keyValueArray?t?t.split(",").map(o=>{if(!o)return;let[r,i]=o.split("=");return {key:r,value:i}}).filter(o=>o):[]:n===d.number?Number(t):n===d.boolean?!!R.includes(t):t}static toType(t,n){let o={};return Object.entries(t).forEach(([r,i])=>{let a=n[r];typeof i=="object"?o[r]=e.toType(i,a):o[r]=e.getTypeValue(i,a);}),o}toType(t){return e.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([o,r])=>{n[o]=e.toStringValue(r);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(o=>`${o.key}=${o.value}`).toString():t.toString()}return typeof t=="object"?e.toString(t):""+t}};var{merge:S}=A__default.default,f=class f{constructor(t){this.options=S({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var l=f;var h=class extends l{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.optionHandler=()=>p(this,null,function*(){let r={};for(let{key:i,value:a}of t){let c=n[i];if(!c)continue;let s=o[i];s&&(r[i]=(yield this.getActionResult({type:c,message:s,default:a}))||a);}return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let r=t,o=g(r,["type"]);return yield prompts.input(o)})}actionHandler(t){return p(this,null,function*(){let n=yield this.optionHandler(),o=utilsCore.unflatJson({delimiter:".",data:n}),r=y.toType(o,this.options.optionTypes);t(r);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};
15
15
 
16
- exports.PromptsCommand = O;
16
+ exports.PromptsCommand = h;
17
17
  //# sourceMappingURL=PromptsCommand.js.map
18
18
  //# sourceMappingURL=PromptsCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","defaultOptionList","jsonToList","flattedOptionType","flatJson","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":"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","file":"PromptsCommand.js","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\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 if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, 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] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: 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 version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\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 { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n"]}
1
+ {"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/OptionHandler.ts","../../lib/command/command.interface.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","defaultOptionList","jsonToList","flattedOptionType","flatJson","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":"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","file":"PromptsCommand.js","sourcesContent":["/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { program } from 'commander';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\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 = OptionHandler.toType(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","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\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 if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, 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] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + 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 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 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"]}
@@ -1,12 +1,12 @@
1
1
  import { input } from '@inquirer/prompts';
2
2
  import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
3
- import S from 'lodash';
3
+ import A from 'lodash';
4
4
 
5
5
  /**
6
6
  @tikkhun/cli-core
7
7
  */
8
- var g=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable;var m=(r,t)=>{var n={};for(var e in r)b.call(r,e)&&t.indexOf(e)<0&&(n[e]=r[e]);if(r!=null&&g)for(var e of g(r))t.indexOf(e)<0&&h.call(r,e)&&(n[e]=r[e]);return n};var y=(r,t,n)=>new Promise((e,o)=>{var i=s=>{try{c(n.next(s));}catch(d){o(d);}},a=s=>{try{c(n.throw(s));}catch(d){o(d);}},c=s=>s.done?e(s.value):Promise.resolve(s.value).then(i,a);c((n=n.apply(r,t)).next());});var p={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},R=["true",!0,"1",1];var u=class r{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===p.array?t.split(","):n===p.object?JSON.parse(t):n===p.keyValueArray?t?t.split(",").map(e=>{if(!e)return;let[o,i]=e.split("=");return {key:o,value:i}}).filter(e=>e):[]:n===p.number?Number(t):n===p.boolean?!!R.includes(t):t}static toType(t,n){let e={};return Object.entries(t).forEach(([o,i])=>{let a=n[o];typeof i=="object"?e[o]=r.toType(i,a):e[o]=r.getTypeValue(i,a);}),e}toType(t){return r.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([e,o])=>{n[e]=r.toStringValue(o);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(e=>`${e.key}=${e.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:x}=S,f=class f{constructor(t){this.options=x({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var l=f;var O=class extends l{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),n=flatJson({delimiter:".",data:this.options.optionTypes}),e=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>y(this,null,function*(){let o={};for(let{key:i,value:a}of t){let c=n[i];if(!c)continue;let s=e[i];s&&(o[i]=(yield this.getActionResult({type:c,message:s,default:a}))||a);}return o});}getActionResult(t){return y(this,null,function*(){let o=t,e=m(o,["type"]);return yield input(e)})}start(t){return y(this,null,function*(){let n=yield this.program(),e=unflatJson({delimiter:".",data:n}),o=u.toType(e,this.options.optionTypes);t(o);})}};
8
+ var m=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var g=(e,t)=>{var n={};for(var o in e)O.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&m)for(var o of m(e))t.indexOf(o)<0&&b.call(e,o)&&(n[o]=e[o]);return n};var p=(e,t,n)=>new Promise((o,r)=>{var i=s=>{try{c(n.next(s));}catch(u){r(u);}},a=s=>{try{c(n.throw(s));}catch(u){r(u);}},c=s=>s.done?o(s.value):Promise.resolve(s.value).then(i,a);c((n=n.apply(e,t)).next());});var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},R=["true",!0,"1",1];var y=class e{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===d.array?t.split(","):n===d.object?JSON.parse(t):n===d.keyValueArray?t?t.split(",").map(o=>{if(!o)return;let[r,i]=o.split("=");return {key:r,value:i}}).filter(o=>o):[]:n===d.number?Number(t):n===d.boolean?!!R.includes(t):t}static toType(t,n){let o={};return Object.entries(t).forEach(([r,i])=>{let a=n[r];typeof i=="object"?o[r]=e.toType(i,a):o[r]=e.getTypeValue(i,a);}),o}toType(t){return e.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([o,r])=>{n[o]=e.toStringValue(r);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(o=>`${o.key}=${o.value}`).toString():t.toString()}return typeof t=="object"?e.toString(t):""+t}};var{merge:S}=A,f=class f{constructor(t){this.options=S({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var l=f;var h=class extends l{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),n=flatJson({delimiter:".",data:this.options.optionTypes}),o=flatJson({delimiter:".",data:this.options.optionTitles});this.optionHandler=()=>p(this,null,function*(){let r={};for(let{key:i,value:a}of t){let c=n[i];if(!c)continue;let s=o[i];s&&(r[i]=(yield this.getActionResult({type:c,message:s,default:a}))||a);}return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return p(this,null,function*(){let r=t,o=g(r,["type"]);return yield input(o)})}actionHandler(t){return p(this,null,function*(){let n=yield this.optionHandler(),o=unflatJson({delimiter:".",data:n}),r=y.toType(o,this.options.optionTypes);t(r);})}start(t){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};
9
9
 
10
- export { O as PromptsCommand };
10
+ export { h as PromptsCommand };
11
11
  //# sourceMappingURL=PromptsCommand.mjs.map
12
12
  //# sourceMappingURL=PromptsCommand.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","defaultOptionList","jsonToList","flattedOptionType","flatJson","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":"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","file":"PromptsCommand.mjs","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\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 if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, 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] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: 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 version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\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 { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n"]}
1
+ {"version":3,"sources":["../../lib/command/PromptsCommand.ts","../../lib/OptionHandler.ts","../../lib/command/command.interface.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","PromptsCommand","defaultOptionList","jsonToList","flattedOptionType","flatJson","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","action","unflattedOptions","unflatJson","typedResults"],"mappings":"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","file":"PromptsCommand.mjs","sourcesContent":["/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { program } from 'commander';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\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 = OptionHandler.toType(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","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\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 if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, 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] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + 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 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 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"]}
@@ -1,7 +1,10 @@
1
+ import { Command } from 'commander';
2
+
1
3
  interface Action {
2
4
  (options: any): void;
3
5
  }
4
6
  interface CommandOptions {
7
+ program?: Command;
5
8
  version: string;
6
9
  description: string;
7
10
  defaultOptions: Record<string, any>;
@@ -1,7 +1,10 @@
1
+ import { Command } from 'commander';
2
+
1
3
  interface Action {
2
4
  (options: any): void;
3
5
  }
4
6
  interface CommandOptions {
7
+ program?: Command;
5
8
  version: string;
6
9
  description: string;
7
10
  defaultOptions: Record<string, any>;
@@ -9,8 +9,8 @@ var n__default = /*#__PURE__*/_interopDefault(n);
9
9
  /**
10
10
  @tikkhun/cli-core
11
11
  */
12
- var{merge:s}=n__default.default,t=class t{constructor(i){this.options=s({},t.DEFAULT_OPTIONS,i),this.init();}};t.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var o=t;
12
+ var{merge:s}=n__default.default,o=class o{constructor(i){this.options=s({},o.DEFAULT_OPTIONS,i),this.init();}};o.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var t=o;
13
13
 
14
- exports.AbstractCommand = o;
14
+ exports.AbstractCommand = t;
15
15
  //# sourceMappingURL=command.interface.js.map
16
16
  //# sourceMappingURL=command.interface.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand"],"mappings":";;;;;;;;;;;AACA,GAAM,CAAE,MAAAA,CAAM,CAAA,CAAIC,kBAaIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAWpC,WAAYC,CAAAA,CAAAA,CAAmC,CAC7C,IAAA,CAAK,OAAUH,CAAAA,CAAAA,CAAM,EAAIE,CAAAA,CAAAA,CAAgB,eAAiBC,CAAAA,CAAO,CACjE,CAAA,IAAA,CAAK,OACP,CAGF,EAjBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAS,CAAA,EAAA,CACT,WAAa,CAAA,EAAA,CACb,cAAgB,CAAA,GAChB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EAAC,CACd,aAAc,EAChB,CARK,CAAA,IAAeE,CAAfF,CAAAA","file":"command.interface.js","sourcesContent":["import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: 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 version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\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"]}
1
+ {"version":3,"sources":["../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand"],"mappings":";;;;;;;;;;;AAEA,GAAM,CAAE,KAAA,CAAAA,CAAM,CAAIC,CAAAA,kBAAAA,CAcIC,CAAf,CAAA,MAAeA,CAAgB,CAYpC,YAAYC,CAAmC,CAAA,CAE7C,IAAK,CAAA,OAAA,CAAUH,CAAM,CAAA,GAAIE,CAAgB,CAAA,eAAA,CAAiBC,CAAO,CAAA,CACjE,IAAK,CAAA,IAAA,GACP,CAGF,CAAA,CAnBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAA,CAAS,OACT,OAAS,CAAA,EAAA,CACT,WAAa,CAAA,EAAA,CACb,cAAgB,CAAA,GAChB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EAAC,CACd,aAAc,EAChB,CATK,CAAA,IAAeE,CAAfF,CAAAA","file":"command.interface.js","sourcesContent":["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 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 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"]}
@@ -3,8 +3,8 @@ import n from 'lodash';
3
3
  /**
4
4
  @tikkhun/cli-core
5
5
  */
6
- var{merge:s}=n,t=class t{constructor(i){this.options=s({},t.DEFAULT_OPTIONS,i),this.init();}};t.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var o=t;
6
+ var{merge:s}=n,o=class o{constructor(i){this.options=s({},o.DEFAULT_OPTIONS,i),this.init();}};o.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var t=o;
7
7
 
8
- export { o as AbstractCommand };
8
+ export { t as AbstractCommand };
9
9
  //# sourceMappingURL=command.interface.mjs.map
10
10
  //# sourceMappingURL=command.interface.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand"],"mappings":";;;;;AACA,GAAM,CAAE,MAAAA,CAAM,CAAA,CAAIC,CAaIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAWpC,WAAYC,CAAAA,CAAAA,CAAmC,CAC7C,IAAA,CAAK,OAAUH,CAAAA,CAAAA,CAAM,EAAIE,CAAAA,CAAAA,CAAgB,eAAiBC,CAAAA,CAAO,CACjE,CAAA,IAAA,CAAK,OACP,CAGF,EAjBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAS,CAAA,EAAA,CACT,WAAa,CAAA,EAAA,CACb,cAAgB,CAAA,GAChB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EAAC,CACd,aAAc,EAChB,CARK,CAAA,IAAeE,CAAfF,CAAAA","file":"command.interface.mjs","sourcesContent":["import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: 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 version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\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"]}
1
+ {"version":3,"sources":["../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand"],"mappings":";;;;;AAEA,GAAM,CAAE,KAAA,CAAAA,CAAM,CAAIC,CAAAA,CAAAA,CAcIC,CAAf,CAAA,MAAeA,CAAgB,CAYpC,YAAYC,CAAmC,CAAA,CAE7C,IAAK,CAAA,OAAA,CAAUH,CAAM,CAAA,GAAIE,CAAgB,CAAA,eAAA,CAAiBC,CAAO,CAAA,CACjE,IAAK,CAAA,IAAA,GACP,CAGF,CAAA,CAnBsBD,CACJ,CAAA,eAAA,CAAkC,CAChD,OAAA,CAAS,OACT,OAAS,CAAA,EAAA,CACT,WAAa,CAAA,EAAA,CACb,cAAgB,CAAA,GAChB,cAAgB,CAAA,EAChB,CAAA,WAAA,CAAa,EAAC,CACd,aAAc,EAChB,CATK,CAAA,IAAeE,CAAfF,CAAAA","file":"command.interface.mjs","sourcesContent":["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 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 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"]}
@@ -1,5 +1,6 @@
1
1
  export { ArgsCommand } from './ArgsCommand.mjs';
2
2
  export { GetActionResultOptions, PromptsCommand } from './PromptsCommand.mjs';
3
3
  export { AbstractCommand, Action, CommandOptions } from './command.interface.mjs';
4
+ export { ConfigCommand } from './ConfigCommand.mjs';
4
5
  import 'commander';
5
6
  import '../OptionHandler.mjs';
@@ -1,5 +1,6 @@
1
1
  export { ArgsCommand } from './ArgsCommand.js';
2
2
  export { GetActionResultOptions, PromptsCommand } from './PromptsCommand.js';
3
3
  export { AbstractCommand, Action, CommandOptions } from './command.interface.js';
4
+ export { ConfigCommand } from './ConfigCommand.js';
4
5
  import 'commander';
5
6
  import '../OptionHandler.js';
@@ -1,21 +1,24 @@
1
1
  'use strict';
2
2
 
3
3
  var utilsCore = require('@tikkhun/utils-core');
4
- var j = require('lodash');
4
+ var R = require('lodash');
5
5
  var commander = require('commander');
6
6
  var prompts = require('@inquirer/prompts');
7
+ var fsExtra = require('fs-extra');
8
+ var path = require('path');
7
9
 
8
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
11
 
10
- var j__default = /*#__PURE__*/_interopDefault(j);
12
+ var R__default = /*#__PURE__*/_interopDefault(R);
11
13
 
12
14
  /**
13
15
  @tikkhun/cli-core
14
16
  */
15
- var u=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable;var g=(r,t)=>{var n={};for(var o in r)b.call(r,o)&&t.indexOf(o)<0&&(n[o]=r[o]);if(r!=null&&u)for(var o of u(r))t.indexOf(o)<0&&x.call(r,o)&&(n[o]=r[o]);return n};var l=(r,t,n)=>new Promise((o,i)=>{var e=s=>{try{c(n.next(s));}catch(m){i(m);}},a=s=>{try{c(n.throw(s));}catch(m){i(m);}},c=s=>s.done?o(s.value):Promise.resolve(s.value).then(e,a);c((n=n.apply(r,t)).next());});var f={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},R=["true",!0,"1",1];var p=class r{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===f.array?t.split(","):n===f.object?JSON.parse(t):n===f.keyValueArray?t?t.split(",").map(o=>{if(!o)return;let[i,e]=o.split("=");return {key:i,value:e}}).filter(o=>o):[]:n===f.number?Number(t):n===f.boolean?!!R.includes(t):t}static toType(t,n){let o={};return Object.entries(t).forEach(([i,e])=>{let a=n[i];typeof e=="object"?o[i]=r.toType(e,a):o[i]=r.getTypeValue(e,a);}),o}toType(t){return r.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([o,i])=>{n[o]=r.toStringValue(i);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(o=>`${o.key}=${o.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:A}=j__default.default,y=class y{constructor(t){this.options=A({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var d=y;var {get:w}=j__default.default,T=class extends d{init(){this.program=commander.createCommand(),this.addOptions();}addOptions(){let t=p.toString(this.options.defaultOptions),n=utilsCore.jsonToList({delimiter:".",json:t}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});n.forEach(({key:i,value:e})=>{if(this.options.excludeOptions.includes(i))return;let a=o[i];this.program.option(`--${i} <${a}>`,w(this.options.optionTitles,i),e);});}start(t){this.program.action(n=>{let o=utilsCore.unflatJson({delimiter:".",data:n}),i=p.toType(o,this.options.optionTypes);t(i);}).parse(process.argv);}};var h=class extends d{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>l(this,null,function*(){let i={};for(let{key:e,value:a}of t){let c=n[e];if(!c)continue;let s=o[e];s&&(i[e]=(yield this.getActionResult({type:c,message:s,default:a}))||a);}return i});}getActionResult(t){return l(this,null,function*(){let i=t,o=g(i,["type"]);return yield prompts.input(o)})}start(t){return l(this,null,function*(){let n=yield this.program(),o=utilsCore.unflatJson({delimiter:".",data:n}),i=p.toType(o,this.options.optionTypes);t(i);})}};
17
+ var y=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var g=(n,t)=>{var o={};for(var i in n)x.call(n,i)&&t.indexOf(i)<0&&(o[i]=n[i]);if(n!=null&&y)for(var i of y(n))t.indexOf(i)<0&&b.call(n,i)&&(o[i]=n[i]);return o};var c=(n,t,o)=>new Promise((i,r)=>{var s=e=>{try{d(o.next(e));}catch(u){r(u);}},a=e=>{try{d(o.throw(e));}catch(u){r(u);}},d=e=>e.done?i(e.value):Promise.resolve(e.value).then(s,a);d((o=o.apply(n,t)).next());});var f={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},j=["true",!0,"1",1];var m=class n{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===f.array?t.split(","):o===f.object?JSON.parse(t):o===f.keyValueArray?t?t.split(",").map(i=>{if(!i)return;let[r,s]=i.split("=");return {key:r,value:s}}).filter(i=>i):[]:o===f.number?Number(t):o===f.boolean?!!j.includes(t):t}static toType(t,o){let i={};return Object.entries(t).forEach(([r,s])=>{let a=o[r];typeof s=="object"?i[r]=n.toType(s,a):i[r]=n.getTypeValue(s,a);}),i}toType(t){return n.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([i,r])=>{o[i]=n.toStringValue(r);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(i=>`${i.key}=${i.value}`).toString():t.toString()}return typeof t=="object"?n.toString(t):""+t}};var{merge:S}=R__default.default,l=class l{constructor(t){this.options=S({},l.DEFAULT_OPTIONS,t),this.init();}};l.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=l;var {get:H}=R__default.default,h=class extends p{init(){this.program=this.options.program||commander.createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:r,value:s})=>{if(this.options.excludeOptions.includes(r))return;let a=i[r];this.program.option(`--${r} <${a}>`,H(this.options.optionTitles,r),s);});}addAction(t){this.program.action(o=>{let i=utilsCore.unflatJson({delimiter:".",data:o}),r=m.toType(i,this.options.optionTypes);t(r);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var T=class extends p{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.optionHandler=()=>c(this,null,function*(){let r={};for(let{key:s,value:a}of t){let d=o[s];if(!d)continue;let e=i[s];e&&(r[s]=(yield this.getActionResult({type:d,message:e,default:a}))||a);}return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return c(this,null,function*(){let r=t,i=g(r,["type"]);return yield prompts.input(i)})}actionHandler(t){return c(this,null,function*(){let o=yield this.optionHandler(),i=utilsCore.unflatJson({delimiter:".",data:o}),r=m.toType(i,this.options.optionTypes);t(r);})}start(t){return c(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var A=class extends p{init(){var t;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",path.join(process.cwd(),"release.json"));}addAction(t){this.program.action(i=>c(this,[i],function*({config:o=""}){let r;if(o.endsWith(".js")?r=yield import(o):o.endsWith(".json")&&(r=yield fsExtra.readJson(o)),!r)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(r);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};
16
18
 
17
- exports.AbstractCommand = d;
18
- exports.ArgsCommand = T;
19
- exports.PromptsCommand = h;
19
+ exports.AbstractCommand = p;
20
+ exports.ArgsCommand = h;
21
+ exports.ConfigCommand = A;
22
+ exports.PromptsCommand = T;
20
23
  //# sourceMappingURL=index.js.map
21
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../lib/command/ArgsCommand.ts","../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults"],"mappings":"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","file":"index.js","sourcesContent":["import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\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 if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, 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] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: 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 version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\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 { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n"]}
1
+ {"version":3,"sources":["../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts","../../lib/command/PromptsCommand.ts","../../lib/command/ConfigCommand.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","defaultValue","title","_a","opts","__objRest","input","unflattedOptions","typedResults","ConfigCommand","join","_0","config","readJson"],"mappings":"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","file":"index.js","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\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 if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, 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] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + 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 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 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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = this.options.program || createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\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 = OptionHandler.toType(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 { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { program } from 'commander';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, value: defaultValue } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\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 = OptionHandler.toType(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 { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nimport { readJson } from 'fs-extra';\nimport { join } from 'path';\nexport class ConfigCommand extends AbstractCommand {\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 this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', join(process.cwd(), 'release.json'));\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,13 +1,15 @@
1
1
  import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
2
- import j from 'lodash';
2
+ import R from 'lodash';
3
3
  import { createCommand } from 'commander';
4
4
  import { input } from '@inquirer/prompts';
5
+ import { readJson } from 'fs-extra';
6
+ import { join } from 'path';
5
7
 
6
8
  /**
7
9
  @tikkhun/cli-core
8
10
  */
9
- var u=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable;var g=(r,t)=>{var n={};for(var o in r)b.call(r,o)&&t.indexOf(o)<0&&(n[o]=r[o]);if(r!=null&&u)for(var o of u(r))t.indexOf(o)<0&&x.call(r,o)&&(n[o]=r[o]);return n};var l=(r,t,n)=>new Promise((o,i)=>{var e=s=>{try{c(n.next(s));}catch(m){i(m);}},a=s=>{try{c(n.throw(s));}catch(m){i(m);}},c=s=>s.done?o(s.value):Promise.resolve(s.value).then(e,a);c((n=n.apply(r,t)).next());});var f={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},R=["true",!0,"1",1];var p=class r{constructor(t){this.schema=t;}static getTypeValue(t,n){return n===f.array?t.split(","):n===f.object?JSON.parse(t):n===f.keyValueArray?t?t.split(",").map(o=>{if(!o)return;let[i,e]=o.split("=");return {key:i,value:e}}).filter(o=>o):[]:n===f.number?Number(t):n===f.boolean?!!R.includes(t):t}static toType(t,n){let o={};return Object.entries(t).forEach(([i,e])=>{let a=n[i];typeof e=="object"?o[i]=r.toType(e,a):o[i]=r.getTypeValue(e,a);}),o}toType(t){return r.toType(t,this.schema)}static toString(t){let n={};return Object.entries(t).forEach(([o,i])=>{n[o]=r.toStringValue(i);}),n}static toStringValue(t){if(Array.isArray(t)){let n=t[0];return typeof n=="object"&&n.hasOwnProperty("key")&&n.hasOwnProperty("value")?t.map(o=>`${o.key}=${o.value}`).toString():t.toString()}return typeof t=="object"?r.toString(t):""+t}};var{merge:A}=j,y=class y{constructor(t){this.options=A({},y.DEFAULT_OPTIONS,t),this.init();}};y.DEFAULT_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var d=y;var {get:w}=j,T=class extends d{init(){this.program=createCommand(),this.addOptions();}addOptions(){let t=p.toString(this.options.defaultOptions),n=jsonToList({delimiter:".",json:t}),o=flatJson({delimiter:".",data:this.options.optionTypes});n.forEach(({key:i,value:e})=>{if(this.options.excludeOptions.includes(i))return;let a=o[i];this.program.option(`--${i} <${a}>`,w(this.options.optionTitles,i),e);});}start(t){this.program.action(n=>{let o=unflatJson({delimiter:".",data:n}),i=p.toType(o,this.options.optionTypes);t(i);}).parse(process.argv);}};var h=class extends d{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),n=flatJson({delimiter:".",data:this.options.optionTypes}),o=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>l(this,null,function*(){let i={};for(let{key:e,value:a}of t){let c=n[e];if(!c)continue;let s=o[e];s&&(i[e]=(yield this.getActionResult({type:c,message:s,default:a}))||a);}return i});}getActionResult(t){return l(this,null,function*(){let i=t,o=g(i,["type"]);return yield input(o)})}start(t){return l(this,null,function*(){let n=yield this.program(),o=unflatJson({delimiter:".",data:n}),i=p.toType(o,this.options.optionTypes);t(i);})}};
11
+ var y=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var g=(n,t)=>{var o={};for(var i in n)x.call(n,i)&&t.indexOf(i)<0&&(o[i]=n[i]);if(n!=null&&y)for(var i of y(n))t.indexOf(i)<0&&b.call(n,i)&&(o[i]=n[i]);return o};var c=(n,t,o)=>new Promise((i,r)=>{var s=e=>{try{d(o.next(e));}catch(u){r(u);}},a=e=>{try{d(o.throw(e));}catch(u){r(u);}},d=e=>e.done?i(e.value):Promise.resolve(e.value).then(s,a);d((o=o.apply(n,t)).next());});var f={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},j=["true",!0,"1",1];var m=class n{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===f.array?t.split(","):o===f.object?JSON.parse(t):o===f.keyValueArray?t?t.split(",").map(i=>{if(!i)return;let[r,s]=i.split("=");return {key:r,value:s}}).filter(i=>i):[]:o===f.number?Number(t):o===f.boolean?!!j.includes(t):t}static toType(t,o){let i={};return Object.entries(t).forEach(([r,s])=>{let a=o[r];typeof s=="object"?i[r]=n.toType(s,a):i[r]=n.getTypeValue(s,a);}),i}toType(t){return n.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([i,r])=>{o[i]=n.toStringValue(r);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(i=>`${i.key}=${i.value}`).toString():t.toString()}return typeof t=="object"?n.toString(t):""+t}};var{merge:S}=R,l=class l{constructor(t){this.options=S({},l.DEFAULT_OPTIONS,t),this.init();}};l.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=l;var {get:H}=R,h=class extends p{init(){this.program=this.options.program||createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),i=flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:r,value:s})=>{if(this.options.excludeOptions.includes(r))return;let a=i[r];this.program.option(`--${r} <${a}>`,H(this.options.optionTitles,r),s);});}addAction(t){this.program.action(o=>{let i=unflatJson({delimiter:".",data:o}),r=m.toType(i,this.options.optionTypes);t(r);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var T=class extends p{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),o=flatJson({delimiter:".",data:this.options.optionTypes}),i=flatJson({delimiter:".",data:this.options.optionTitles});this.optionHandler=()=>c(this,null,function*(){let r={};for(let{key:s,value:a}of t){let d=o[s];if(!d)continue;let e=i[s];e&&(r[s]=(yield this.getActionResult({type:d,message:e,default:a}))||a);}return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return c(this,null,function*(){let r=t,i=g(r,["type"]);return yield input(i)})}actionHandler(t){return c(this,null,function*(){let o=yield this.optionHandler(),i=unflatJson({delimiter:".",data:o}),r=m.toType(i,this.options.optionTypes);t(r);})}start(t){return c(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var A=class extends p{init(){var t;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),this.addOptions();}addOptions(){var t;(t=this.program)==null||t.option("-c --config <string>","\u914D\u7F6E\u6587\u4EF6",join(process.cwd(),"release.json"));}addAction(t){this.program.action(i=>c(this,[i],function*({config:o=""}){let r;if(o.endsWith(".js")?r=yield import(o):o.endsWith(".json")&&(r=yield readJson(o)),!r)throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5${o}`);t(r);}));}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};
10
12
 
11
- export { d as AbstractCommand, T as ArgsCommand, h as PromptsCommand };
13
+ export { p as AbstractCommand, h as ArgsCommand, A as ConfigCommand, T as PromptsCommand };
12
14
  //# sourceMappingURL=index.mjs.map
13
15
  //# sourceMappingURL=index.mjs.map