@tikkhun/cli-core 0.0.16 → 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.
Files changed (117) hide show
  1. package/dist/CommandManager.d.mts +2 -1
  2. package/dist/CommandManager.d.ts +2 -1
  3. package/dist/CommandManager.js +8 -8
  4. package/dist/CommandManager.js.map +1 -1
  5. package/dist/CommandManager.mjs +4 -4
  6. package/dist/CommandManager.mjs.map +1 -1
  7. package/dist/Info.d.mts +8 -0
  8. package/dist/Info.d.ts +8 -0
  9. package/dist/Info.js +13 -0
  10. package/dist/Info.js.map +1 -0
  11. package/dist/Info.mjs +10 -0
  12. package/dist/Info.mjs.map +1 -0
  13. package/dist/command/ArgsCommand.js +4 -4
  14. package/dist/command/ArgsCommand.js.map +1 -1
  15. package/dist/command/ArgsCommand.mjs +3 -3
  16. package/dist/command/ArgsCommand.mjs.map +1 -1
  17. package/dist/command/ConfigCommand.js +2 -2
  18. package/dist/command/ConfigCommand.js.map +1 -1
  19. package/dist/command/ConfigCommand.mjs +2 -2
  20. package/dist/command/ConfigCommand.mjs.map +1 -1
  21. package/dist/command/PromptsCommand.d.mts +1 -1
  22. package/dist/command/PromptsCommand.d.ts +1 -1
  23. package/dist/command/PromptsCommand.js +4 -4
  24. package/dist/command/PromptsCommand.js.map +1 -1
  25. package/dist/command/PromptsCommand.mjs +3 -3
  26. package/dist/command/PromptsCommand.mjs.map +1 -1
  27. package/dist/command/command.interface.d.mts +1 -0
  28. package/dist/command/command.interface.d.ts +1 -0
  29. package/dist/command/command.interface.js +1 -1
  30. package/dist/command/command.interface.js.map +1 -1
  31. package/dist/command/command.interface.mjs +1 -1
  32. package/dist/command/command.interface.mjs.map +1 -1
  33. package/dist/command/index.d.mts +1 -1
  34. package/dist/command/index.d.ts +1 -1
  35. package/dist/command/index.js +8 -8
  36. package/dist/command/index.js.map +1 -1
  37. package/dist/command/index.mjs +4 -4
  38. package/dist/command/index.mjs.map +1 -1
  39. package/dist/index.d.mts +9 -2
  40. package/dist/index.d.ts +9 -2
  41. package/dist/index.js +24 -17
  42. package/dist/index.js.map +1 -1
  43. package/dist/index.mjs +4 -4
  44. package/dist/index.mjs.map +1 -1
  45. package/dist/options-transformer/index.d.mts +8 -0
  46. package/dist/options-transformer/index.d.ts +8 -0
  47. package/dist/options-transformer/index.js +19 -0
  48. package/dist/options-transformer/index.js.map +1 -0
  49. package/dist/options-transformer/index.mjs +8 -0
  50. package/dist/options-transformer/index.mjs.map +1 -0
  51. package/dist/options-transformer/options-transformer.d.mts +23 -0
  52. package/dist/options-transformer/options-transformer.d.ts +23 -0
  53. package/dist/options-transformer/options-transformer.js +11 -0
  54. package/dist/options-transformer/options-transformer.js.map +1 -0
  55. package/dist/options-transformer/options-transformer.mjs +8 -0
  56. package/dist/options-transformer/options-transformer.mjs.map +1 -0
  57. package/dist/options-transformer/paramTypes/array.type.d.mts +9 -0
  58. package/dist/options-transformer/paramTypes/array.type.d.ts +9 -0
  59. package/dist/options-transformer/paramTypes/array.type.js +10 -0
  60. package/dist/options-transformer/paramTypes/array.type.js.map +1 -0
  61. package/dist/options-transformer/paramTypes/array.type.mjs +8 -0
  62. package/dist/options-transformer/paramTypes/array.type.mjs.map +1 -0
  63. package/dist/options-transformer/paramTypes/boolean.type.d.mts +7 -0
  64. package/dist/options-transformer/paramTypes/boolean.type.d.ts +7 -0
  65. package/dist/options-transformer/paramTypes/boolean.type.js +12 -0
  66. package/dist/options-transformer/paramTypes/boolean.type.js.map +1 -0
  67. package/dist/options-transformer/paramTypes/boolean.type.mjs +8 -0
  68. package/dist/options-transformer/paramTypes/boolean.type.mjs.map +1 -0
  69. package/dist/options-transformer/paramTypes/index.d.mts +7 -0
  70. package/dist/options-transformer/paramTypes/index.d.ts +7 -0
  71. package/dist/options-transformer/paramTypes/index.js +17 -0
  72. package/dist/options-transformer/paramTypes/index.js.map +1 -0
  73. package/dist/options-transformer/paramTypes/index.mjs +8 -0
  74. package/dist/options-transformer/paramTypes/index.mjs.map +1 -0
  75. package/dist/options-transformer/paramTypes/key-value-array.type.d.mts +5 -0
  76. package/dist/options-transformer/paramTypes/key-value-array.type.d.ts +5 -0
  77. package/dist/options-transformer/paramTypes/key-value-array.type.js +10 -0
  78. package/dist/options-transformer/paramTypes/key-value-array.type.js.map +1 -0
  79. package/dist/options-transformer/paramTypes/key-value-array.type.mjs +8 -0
  80. package/dist/options-transformer/paramTypes/key-value-array.type.mjs.map +1 -0
  81. package/dist/options-transformer/paramTypes/number.type.d.mts +5 -0
  82. package/dist/options-transformer/paramTypes/number.type.d.ts +5 -0
  83. package/dist/options-transformer/paramTypes/number.type.js +10 -0
  84. package/dist/options-transformer/paramTypes/number.type.js.map +1 -0
  85. package/dist/options-transformer/paramTypes/number.type.mjs +8 -0
  86. package/dist/options-transformer/paramTypes/number.type.mjs.map +1 -0
  87. package/dist/options-transformer/paramTypes/object-array.type.d.mts +5 -0
  88. package/dist/options-transformer/paramTypes/object-array.type.d.ts +5 -0
  89. package/dist/options-transformer/paramTypes/object-array.type.js +10 -0
  90. package/dist/options-transformer/paramTypes/object-array.type.js.map +1 -0
  91. package/dist/options-transformer/paramTypes/object-array.type.mjs +8 -0
  92. package/dist/options-transformer/paramTypes/object-array.type.mjs.map +1 -0
  93. package/dist/options-transformer/paramTypes/object.type.d.mts +5 -0
  94. package/dist/options-transformer/paramTypes/object.type.d.ts +5 -0
  95. package/dist/options-transformer/paramTypes/object.type.js +10 -0
  96. package/dist/options-transformer/paramTypes/object.type.js.map +1 -0
  97. package/dist/options-transformer/paramTypes/object.type.mjs +8 -0
  98. package/dist/options-transformer/paramTypes/object.type.mjs.map +1 -0
  99. package/dist/options-transformer/paramTypes/param-type.interface.d.mts +6 -0
  100. package/dist/options-transformer/paramTypes/param-type.interface.d.ts +6 -0
  101. package/dist/options-transformer/paramTypes/param-type.interface.js +4 -0
  102. package/dist/options-transformer/paramTypes/param-type.interface.js.map +1 -0
  103. package/dist/options-transformer/paramTypes/param-type.interface.mjs +3 -0
  104. package/dist/options-transformer/paramTypes/param-type.interface.mjs.map +1 -0
  105. package/package.json +2 -2
  106. package/dist/OptionHandler.d.mts +0 -26
  107. package/dist/OptionHandler.d.ts +0 -26
  108. package/dist/OptionHandler.js +0 -13
  109. package/dist/OptionHandler.js.map +0 -1
  110. package/dist/OptionHandler.mjs +0 -8
  111. package/dist/OptionHandler.mjs.map +0 -1
  112. package/dist/package.d.mts +0 -3
  113. package/dist/package.d.ts +0 -3
  114. package/dist/package.js +0 -12
  115. package/dist/package.js.map +0 -1
  116. package/dist/package.mjs +0 -10
  117. package/dist/package.mjs.map +0 -1
@@ -3,7 +3,7 @@ import n from 'lodash';
3
3
  /**
4
4
  @tikkhun/cli-core
5
5
  */
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;
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:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var t=o;
7
7
 
8
8
  export { t as AbstractCommand };
9
9
  //# sourceMappingURL=command.interface.mjs.map
@@ -1 +1 @@
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
+ {"version":3,"sources":["../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand"],"mappings":";;;;;AAEA,GAAM,CAAE,KAAA,CAAAA,CAAM,CAAIC,CAAAA,CAAAA,CAeIC,CAAf,CAAA,MAAeA,CAAgB,CAapC,YAAYC,CAAmC,CAAA,CAE7C,IAAK,CAAA,OAAA,CAAUH,CAAM,CAAA,EAAIE,CAAAA,CAAAA,CAAgB,eAAiBC,CAAAA,CAAO,CACjE,CAAA,IAAA,CAAK,IAAK,GACZ,CAGF,CApBsBD,CAAAA,CAAAA,CACJ,eAAkC,CAAA,CAChD,OAAS,CAAA,KAAA,CAAA,CACT,QAAS,EACT,CAAA,WAAA,CAAa,EACb,CAAA,IAAA,CAAM,KACN,CAAA,CAAA,cAAA,CAAgB,EAChB,CAAA,cAAA,CAAgB,EAAC,CACjB,WAAa,CAAA,EACb,CAAA,YAAA,CAAc,EAChB,CAVK,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 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"]}
@@ -3,4 +3,4 @@ export { GetActionResultOptions, PromptsCommand } from './PromptsCommand.mjs';
3
3
  export { AbstractCommand, Action, CommandOptions } from './command.interface.mjs';
4
4
  export { ConfigCommand } from './ConfigCommand.mjs';
5
5
  import 'commander';
6
- import '../OptionHandler.mjs';
6
+ import '../options-transformer/options-transformer.mjs';
@@ -3,4 +3,4 @@ export { GetActionResultOptions, PromptsCommand } from './PromptsCommand.js';
3
3
  export { AbstractCommand, Action, CommandOptions } from './command.interface.js';
4
4
  export { ConfigCommand } from './ConfigCommand.js';
5
5
  import 'commander';
6
- import '../OptionHandler.js';
6
+ import '../options-transformer/options-transformer.js';
@@ -1,26 +1,26 @@
1
1
  'use strict';
2
2
 
3
3
  var utilsCore = require('@tikkhun/utils-core');
4
- var V = require('lodash');
4
+ var J = require('lodash');
5
5
  var commander = require('commander');
6
6
  var prompts = require('@inquirer/prompts');
7
- var F = require('fs-extra');
7
+ var W = require('fs-extra');
8
8
  var path = require('path');
9
9
  var logger = require('@tikkhun/logger');
10
10
 
11
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
 
13
- var V__default = /*#__PURE__*/_interopDefault(V);
14
- var F__default = /*#__PURE__*/_interopDefault(F);
13
+ var J__default = /*#__PURE__*/_interopDefault(J);
14
+ var W__default = /*#__PURE__*/_interopDefault(W);
15
15
 
16
16
  /**
17
17
  @tikkhun/cli-core
18
18
  */
19
- var u=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable;var h=(n,t)=>{var o={};for(var r in n)x.call(n,r)&&t.indexOf(r)<0&&(o[r]=n[r]);if(n!=null&&u)for(var r of u(n))t.indexOf(r)<0&&R.call(n,r)&&(o[r]=n[r]);return o};var a=(n,t,o)=>new Promise((r,i)=>{var s=d=>{try{g(o.next(d));}catch(y){i(y);}},e=d=>{try{g(o.throw(d));}catch(y){i(y);}},g=d=>d.done?r(d.value):Promise.resolve(d.value).then(s,e);g((o=o.apply(n,t)).next());});var m={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},S=["true",!0,"1",1];var p=class n{constructor(t){this.schema=t;}static getTypeValue(t,o){if(t!=="undefined"){if(o===m.keyValueArray)return t?t.split(",").map(r=>{if(!r)return;let[i,s]=r.split("=");return {key:i,value:s}}).filter(r=>r):[];if(o===m.objectArray)try{return t?JSON.parse(t):[]}catch(r){return []}return o===m.array?t.split(","):o===m.object?typeof t=="object"?JSON.parse(t):{}:o===m.number?Number(t):o===m.boolean?!!S.includes(t):t}}static toType(t,o){let r={};return Object.entries(t).forEach(([i,s])=>{let e=o[i];typeof s=="object"?r[i]=n.toType(s,e):r[i]=n.getTypeValue(s,e);}),r}toType(t){return n.toType(t,this.schema)}static toFlatList(t){}static toString(t){let o={};return Object.entries(t).forEach(([r,i])=>{o[r]=n.toStringValue(i);}),o}static isKeyValueObject(t){let o=Object.keys(t);return o[0]==="key"&&o[1]==="value"}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"?this.isKeyValueObject(o)?t.map(i=>`${i.key}=${i.value}`).toString():JSON.stringify(t):t.toString()}return typeof t=="object"?n.toString(t):""+t}};var{merge:E}=V__default.default,l=class l{constructor(t){this.options=E({},l.DEFAULT_OPTIONS,t),this.init();}};l.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=l;var {get:H}=V__default.default,O=class extends c{getOptions(){let t=p.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return o.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:s})=>({key:i,value:s,type:r[i]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:r,type:i})=>{this.program.option(`--${o} <${i}>`,H(this.options.optionTitles,o),r);});}addAction(t){this.program.action(o=>{let r=utilsCore.unflatJson({delimiter:".",data:o}),i=p.toType(r,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var T=class extends c{getOptions(){let t=p.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:e})=>({key:s,defaultValue:e,type:r[s],title:i[s]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:r,defaultValue:i,type:s,title:e}of t)s&&e&&(o[r]=(yield this.getActionResult({type:s,message:e,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let i=t,r=h(i,["type"]);return yield prompts.input(r)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),r=utilsCore.unflatJson({delimiter:".",data:o}),i=p.toType(r,this.options.optionTypes);t(i);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:K,writeJson:G}=F__default.default,f=class f extends c{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(r=>a(this,null,function*(){let{path:i}=r;i||(i=f.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield G(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(r=>a(this,[r],function*({config:o=""}){let i;if(o.endsWith(".js")?i=yield import(o):o.endsWith(".json")&&(i=yield K(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 j=f;
19
+ var O=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable;var b=(o,t)=>{var r={};for(var n in o)C.call(o,n)&&t.indexOf(n)<0&&(r[n]=o[n]);if(o!=null&&O)for(var n of O(o))t.indexOf(n)<0&&k.call(o,n)&&(r[n]=o[n]);return r};var a=(o,t,r)=>new Promise((n,i)=>{var e=m=>{try{g(r.next(m));}catch(u){i(u);}},s=m=>{try{g(r.throw(m));}catch(u){i(u);}},g=m=>m.done?n(m.value):Promise.resolve(m.value).then(e,s);g((r=r.apply(o,t)).next());});var l={stringify(o){return o!=null&&o.length?o.toString():""},parse(o){return o.split(",")}};var w=["true",!0,"1",1];var x={stringify(o){return o.toString()},parse(o){return !!w.includes(o)}};var h={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 A={stringify(o){return o.toString()},parse(o){return Number(o)}};var T={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 f={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},p=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 s=r[i];typeof e=="object"?n[i]=o.parse(e,s):n[i]=o.parseValueByType(e,s);}),n}static parseValueByType(t,r){if(t!=="undefined")return r===f.keyValueArray?h.parse(t):r===f.objectArray?T.parse(t):r===f.array?l.parse(t):r===f.object?j.parse(t):r===f.number?A.parse(t):r===f.boolean?x.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)?h.stringify(t):T.stringify(t):l.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:L}=J__default.default,d=class d{constructor(t){this.options=L({},d.DEFAULT_OPTIONS,t),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var {get:D}=J__default.default,P=class extends c{getOptions(){let t=p.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}>`,D(this.options.optionTitles,r),n);});}addAction(t){this.program.action(r=>{let n=utilsCore.unflatJson({delimiter:".",data:r}),i=p.parse(n,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var R=class extends c{getOptions(){let t=p.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:s})=>({key:e,defaultValue:s,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let r={};for(let{key:n,defaultValue:i,type:e,title:s}of t)e&&s&&(r[n]=(yield this.getActionResult({type:e,message:s,default:i}))||i);return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let i=t,n=b(i,["type"]);return yield prompts.input(n)})}actionHandler(t){return a(this,null,function*(){let r=yield this.optionHandler(),n=utilsCore.unflatJson({delimiter:".",data:r}),i=p.parse(n,this.options.optionTypes);t(i);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:M,writeJson:q}=W__default.default,y=class y extends c{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",y.defaultConfigPath).action(n=>a(this,null,function*(){let{path:i}=n;i||(i=y.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield q(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",y.defaultConfigPath);}addAction(t){this.program.action(n=>a(this,[n],function*({config:r=""}){let i;if(r.endsWith(".js")?i=yield import(r):r.endsWith(".json")&&(i=yield M(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);}};y.defaultConfigPath=path.join(process.cwd(),"release.json");var E=y;
20
20
 
21
21
  exports.AbstractCommand = c;
22
- exports.ArgsCommand = O;
23
- exports.ConfigCommand = j;
24
- exports.PromptsCommand = T;
22
+ exports.ArgsCommand = P;
23
+ exports.ConfigCommand = E;
24
+ exports.PromptsCommand = R;
25
25
  //# sourceMappingURL=index.js.map
26
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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","i","error","obj","_obj","keys","item1","item","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"],"mappings":"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","file":"index.js","sourcesContent":["export 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;\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 (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n // stringify 化是 这样 a=b,c=d , 转换回来就是 [{a:b},{c:d}]\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.objectArray) {\n try {\n return value ? JSON.parse(value) : [];\n } catch (error) {\n return [];\n }\n }\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return typeof value === 'object' ? JSON.parse(value) : {};\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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n static toStringValue(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 // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return JSON.stringify(value);\n }\n // [1,2,3]=> 1,2,3\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 } = _;\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 = OptionHandler.toString(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 = 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 _ 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 = OptionHandler.toString(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 = 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 { 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/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"],"names":["arrayType","v","asTrueValues","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"],"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"]}
@@ -1,16 +1,16 @@
1
1
  import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
2
- import V from 'lodash';
2
+ import J from 'lodash';
3
3
  import { createCommand } from 'commander';
4
4
  import { input } from '@inquirer/prompts';
5
- import F from 'fs-extra';
5
+ import W from 'fs-extra';
6
6
  import { join } from 'path';
7
7
  import { Logger } from '@tikkhun/logger';
8
8
 
9
9
  /**
10
10
  @tikkhun/cli-core
11
11
  */
12
- var u=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable;var h=(n,t)=>{var o={};for(var r in n)x.call(n,r)&&t.indexOf(r)<0&&(o[r]=n[r]);if(n!=null&&u)for(var r of u(n))t.indexOf(r)<0&&R.call(n,r)&&(o[r]=n[r]);return o};var a=(n,t,o)=>new Promise((r,i)=>{var s=d=>{try{g(o.next(d));}catch(y){i(y);}},e=d=>{try{g(o.throw(d));}catch(y){i(y);}},g=d=>d.done?r(d.value):Promise.resolve(d.value).then(s,e);g((o=o.apply(n,t)).next());});var m={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},S=["true",!0,"1",1];var p=class n{constructor(t){this.schema=t;}static getTypeValue(t,o){if(t!=="undefined"){if(o===m.keyValueArray)return t?t.split(",").map(r=>{if(!r)return;let[i,s]=r.split("=");return {key:i,value:s}}).filter(r=>r):[];if(o===m.objectArray)try{return t?JSON.parse(t):[]}catch(r){return []}return o===m.array?t.split(","):o===m.object?typeof t=="object"?JSON.parse(t):{}:o===m.number?Number(t):o===m.boolean?!!S.includes(t):t}}static toType(t,o){let r={};return Object.entries(t).forEach(([i,s])=>{let e=o[i];typeof s=="object"?r[i]=n.toType(s,e):r[i]=n.getTypeValue(s,e);}),r}toType(t){return n.toType(t,this.schema)}static toFlatList(t){}static toString(t){let o={};return Object.entries(t).forEach(([r,i])=>{o[r]=n.toStringValue(i);}),o}static isKeyValueObject(t){let o=Object.keys(t);return o[0]==="key"&&o[1]==="value"}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"?this.isKeyValueObject(o)?t.map(i=>`${i.key}=${i.value}`).toString():JSON.stringify(t):t.toString()}return typeof t=="object"?n.toString(t):""+t}};var{merge:E}=V,l=class l{constructor(t){this.options=E({},l.DEFAULT_OPTIONS,t),this.init();}};l.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=l;var {get:H}=V,O=class extends c{getOptions(){let t=p.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),r=flatJson({delimiter:".",data:this.options.optionTypes});return o.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:s})=>({key:i,value:s,type:r[i]}))}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:r,type:i})=>{this.program.option(`--${o} <${i}>`,H(this.options.optionTitles,o),r);});}addAction(t){this.program.action(o=>{let r=unflatJson({delimiter:".",data:o}),i=p.toType(r,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var T=class extends c{getOptions(){let t=p.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),r=flatJson({delimiter:".",data:this.options.optionTypes}),i=flatJson({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:e})=>({key:s,defaultValue:e,type:r[s],title:i[s]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:r,defaultValue:i,type:s,title:e}of t)s&&e&&(o[r]=(yield this.getActionResult({type:s,message:e,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let i=t,r=h(i,["type"]);return yield input(r)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),r=unflatJson({delimiter:".",data:o}),i=p.toType(r,this.options.optionTypes);t(i);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:K,writeJson:G}=F,f=class f extends c{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(r=>a(this,null,function*(){let{path:i}=r;i||(i=f.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield G(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(r=>a(this,[r],function*({config:o=""}){let i;if(o.endsWith(".js")?i=yield import(o):o.endsWith(".json")&&(i=yield K(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 j=f;
12
+ var O=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable;var b=(o,t)=>{var r={};for(var n in o)C.call(o,n)&&t.indexOf(n)<0&&(r[n]=o[n]);if(o!=null&&O)for(var n of O(o))t.indexOf(n)<0&&k.call(o,n)&&(r[n]=o[n]);return r};var a=(o,t,r)=>new Promise((n,i)=>{var e=m=>{try{g(r.next(m));}catch(u){i(u);}},s=m=>{try{g(r.throw(m));}catch(u){i(u);}},g=m=>m.done?n(m.value):Promise.resolve(m.value).then(e,s);g((r=r.apply(o,t)).next());});var l={stringify(o){return o!=null&&o.length?o.toString():""},parse(o){return o.split(",")}};var w=["true",!0,"1",1];var x={stringify(o){return o.toString()},parse(o){return !!w.includes(o)}};var h={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 A={stringify(o){return o.toString()},parse(o){return Number(o)}};var T={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 f={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},p=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 s=r[i];typeof e=="object"?n[i]=o.parse(e,s):n[i]=o.parseValueByType(e,s);}),n}static parseValueByType(t,r){if(t!=="undefined")return r===f.keyValueArray?h.parse(t):r===f.objectArray?T.parse(t):r===f.array?l.parse(t):r===f.object?j.parse(t):r===f.number?A.parse(t):r===f.boolean?x.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)?h.stringify(t):T.stringify(t):l.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:L}=J,d=class d{constructor(t){this.options=L({},d.DEFAULT_OPTIONS,t),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var {get:D}=J,P=class extends c{getOptions(){let t=p.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}>`,D(this.options.optionTitles,r),n);});}addAction(t){this.program.action(r=>{let n=unflatJson({delimiter:".",data:r}),i=p.parse(n,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var R=class extends c{getOptions(){let t=p.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:s})=>({key:e,defaultValue:s,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let r={};for(let{key:n,defaultValue:i,type:e,title:s}of t)e&&s&&(r[n]=(yield this.getActionResult({type:e,message:s,default:i}))||i);return r}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return a(this,null,function*(){let i=t,n=b(i,["type"]);return yield input(n)})}actionHandler(t){return a(this,null,function*(){let r=yield this.optionHandler(),n=unflatJson({delimiter:".",data:r}),i=p.parse(n,this.options.optionTypes);t(i);})}start(t){return a(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:M,writeJson:q}=W,y=class y extends c{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",y.defaultConfigPath).action(n=>a(this,null,function*(){let{path:i}=n;i||(i=y.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield q(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",y.defaultConfigPath);}addAction(t){this.program.action(n=>a(this,[n],function*({config:r=""}){let i;if(r.endsWith(".js")?i=yield import(r):r.endsWith(".json")&&(i=yield M(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);}};y.defaultConfigPath=join(process.cwd(),"release.json");var E=y;
13
13
 
14
- export { c as AbstractCommand, O as ArgsCommand, j as ConfigCommand, T as PromptsCommand };
14
+ export { c as AbstractCommand, P as ArgsCommand, E as ConfigCommand, R as PromptsCommand };
15
15
  //# sourceMappingURL=index.mjs.map
16
16
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
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","i","error","obj","_obj","keys","item1","item","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"],"mappings":"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","file":"index.mjs","sourcesContent":["export 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;\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 (value === 'undefined') {\n return;\n }\n if (type === TYPES.keyValueArray) {\n // stringify 化是 这样 a=b,c=d , 转换回来就是 [{a:b},{c:d}]\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.objectArray) {\n try {\n return value ? JSON.parse(value) : [];\n } catch (error) {\n return [];\n }\n }\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return typeof value === 'object' ? JSON.parse(value) : {};\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 // 单纯就是扁平化\n static toFlatList(obj: Record<string, any>) {}\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 isKeyValueObject(obj: any) {\n const keys = Object.keys(obj);\n return keys[0] === 'key' && keys[1] === 'value';\n }\n static toStringValue(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 // [{key: 1,value:2},{key: \"foo\",value: \"bar\"}] => 1=2,foo=bar\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return JSON.stringify(value);\n }\n // [1,2,3]=> 1,2,3\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 } = _;\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 = OptionHandler.toString(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 = 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 _ 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 = OptionHandler.toString(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 = 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 { 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/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"],"names":["arrayType","v","asTrueValues","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"],"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"]}
package/dist/index.d.mts CHANGED
@@ -3,7 +3,14 @@ export { GetActionResultOptions, PromptsCommand } from './command/PromptsCommand
3
3
  export { AbstractCommand, Action, CommandOptions } from './command/command.interface.mjs';
4
4
  export { ConfigCommand } from './command/ConfigCommand.mjs';
5
5
  export { Cli, CommandManager, CommandManagerOptions, CommandTypes } from './CommandManager.mjs';
6
- export { OptionHandler, TYPES, asFalseValues, asTrueValues } from './OptionHandler.mjs';
7
- export { echoPackage } from './package.mjs';
6
+ export { OptionsTransformer, TYPES } from './options-transformer/options-transformer.mjs';
7
+ export { KeyValueItem, arrayType } from './options-transformer/paramTypes/array.type.mjs';
8
+ export { asFalseValues, asTrueValues, booleanType } from './options-transformer/paramTypes/boolean.type.mjs';
9
+ export { keyValueArrayType } from './options-transformer/paramTypes/key-value-array.type.mjs';
10
+ export { numberType } from './options-transformer/paramTypes/number.type.mjs';
11
+ export { objectArrayType } from './options-transformer/paramTypes/object-array.type.mjs';
12
+ export { objectType } from './options-transformer/paramTypes/object.type.mjs';
13
+ export { ParamType } from './options-transformer/paramTypes/param-type.interface.mjs';
14
+ export { echo, echoPackage } from './Info.mjs';
8
15
  import 'commander';
9
16
  import '@tikkhun/logger';
package/dist/index.d.ts CHANGED
@@ -3,7 +3,14 @@ export { GetActionResultOptions, PromptsCommand } from './command/PromptsCommand
3
3
  export { AbstractCommand, Action, CommandOptions } from './command/command.interface.js';
4
4
  export { ConfigCommand } from './command/ConfigCommand.js';
5
5
  export { Cli, CommandManager, CommandManagerOptions, CommandTypes } from './CommandManager.js';
6
- export { OptionHandler, TYPES, asFalseValues, asTrueValues } from './OptionHandler.js';
7
- export { echoPackage } from './package.js';
6
+ export { OptionsTransformer, TYPES } from './options-transformer/options-transformer.js';
7
+ export { KeyValueItem, arrayType } from './options-transformer/paramTypes/array.type.js';
8
+ export { asFalseValues, asTrueValues, booleanType } from './options-transformer/paramTypes/boolean.type.js';
9
+ export { keyValueArrayType } from './options-transformer/paramTypes/key-value-array.type.js';
10
+ export { numberType } from './options-transformer/paramTypes/number.type.js';
11
+ export { objectArrayType } from './options-transformer/paramTypes/object-array.type.js';
12
+ export { objectType } from './options-transformer/paramTypes/object.type.js';
13
+ export { ParamType } from './options-transformer/paramTypes/param-type.interface.js';
14
+ export { echo, echoPackage } from './Info.js';
8
15
  import 'commander';
9
16
  import '@tikkhun/logger';
package/dist/index.js CHANGED
@@ -1,34 +1,41 @@
1
1
  'use strict';
2
2
 
3
3
  var utilsCore = require('@tikkhun/utils-core');
4
- var F = require('lodash');
4
+ var W = require('lodash');
5
5
  var commander = require('commander');
6
6
  var prompts = require('@inquirer/prompts');
7
- var z = require('fs-extra');
7
+ var tt = require('fs-extra');
8
8
  var path = require('path');
9
9
  var logger = require('@tikkhun/logger');
10
10
 
11
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
 
13
- var F__default = /*#__PURE__*/_interopDefault(F);
14
- var z__default = /*#__PURE__*/_interopDefault(z);
13
+ var W__default = /*#__PURE__*/_interopDefault(W);
14
+ var tt__default = /*#__PURE__*/_interopDefault(tt);
15
15
 
16
16
  /**
17
17
  @tikkhun/cli-core
18
18
  */
19
- var V=Object.defineProperty,N=Object.defineProperties;var J=Object.getOwnPropertyDescriptors;var y=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,w=Object.prototype.propertyIsEnumerable;var S=(n,t,o)=>t in n?V(n,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[t]=o,f=(n,t)=>{for(var o in t||(t={}))R.call(t,o)&&S(n,o,t[o]);if(y)for(var o of y(t))w.call(t,o)&&S(n,o,t[o]);return n},l=(n,t)=>N(n,J(t));var u=(n,t)=>{var o={};for(var r in n)R.call(n,r)&&t.indexOf(r)<0&&(o[r]=n[r]);if(n!=null&&y)for(var r of y(n))t.indexOf(r)<0&&w.call(n,r)&&(o[r]=n[r]);return o};var p=(n,t,o)=>new Promise((r,i)=>{var s=c=>{try{x(o.next(c));}catch(b){i(b);}},a=c=>{try{x(o.throw(c));}catch(b){i(b);}},x=c=>c.done?r(c.value):Promise.resolve(c.value).then(s,a);x((o=o.apply(n,t)).next());});var d={array:"array",keyValueArray:"keyValueArray",objectArray:"objectArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},D=["true",!0,"1",1],nt=["false",!1,"",0],m=class n{constructor(t){this.schema=t;}static getTypeValue(t,o){if(t!=="undefined"){if(o===d.keyValueArray)return t?t.split(",").map(r=>{if(!r)return;let[i,s]=r.split("=");return {key:i,value:s}}).filter(r=>r):[];if(o===d.objectArray)try{return t?JSON.parse(t):[]}catch(r){return []}return o===d.array?t.split(","):o===d.object?typeof t=="object"?JSON.parse(t):{}:o===d.number?Number(t):o===d.boolean?!!D.includes(t):t}}static toType(t,o){let r={};return Object.entries(t).forEach(([i,s])=>{let a=o[i];typeof s=="object"?r[i]=n.toType(s,a):r[i]=n.getTypeValue(s,a);}),r}toType(t){return n.toType(t,this.schema)}static toFlatList(t){}static toString(t){let o={};return Object.entries(t).forEach(([r,i])=>{o[r]=n.toStringValue(i);}),o}static isKeyValueObject(t){let o=Object.keys(t);return o[0]==="key"&&o[1]==="value"}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"?this.isKeyValueObject(o)?t.map(i=>`${i.key}=${i.value}`).toString():JSON.stringify(t):t.toString()}return typeof t=="object"?n.toString(t):""+t}};var{merge:H}=F__default.default,h=class h{constructor(t){this.options=H({},h.DEFAULT_OPTIONS,t),this.init();}};h.DEFAULT_OPTIONS={program:void 0,version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=h;var {get:I}=F__default.default,O=class extends e{getOptions(){let t=m.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});return o.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:s})=>({key:i,value:s,type:r[i]}))}init(){this.program=this.options.program||commander.createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:r,type:i})=>{this.program.option(`--${o} <${i}>`,I(this.options.optionTitles,o),r);});}addAction(t){this.program.action(o=>{let r=utilsCore.unflatJson({delimiter:".",data:o}),i=m.toType(r,this.options.optionTypes);t(i);});}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var T=class extends e{getOptions(){let t=m.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:a})=>({key:s,defaultValue:a,type:r[s],title:i[s]}))}init(){let t=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:r,defaultValue:i,type:s,title:a}of t)s&&a&&(o[r]=(yield this.getActionResult({type:s,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,r=u(i,["type"]);return yield prompts.input(r)})}actionHandler(t){return p(this,null,function*(){let o=yield this.optionHandler(),r=utilsCore.unflatJson({delimiter:".",data:o}),i=m.toType(r,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:B,writeJson:Q}=z__default.default,g=class g extends e{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",g.defaultConfigPath).action(r=>p(this,null,function*(){let{path:i}=r;i||(i=g.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield Q(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",g.defaultConfigPath);}addAction(t){this.program.action(r=>p(this,[r],function*({config:o=""}){let i;if(o.endsWith(".js")?i=yield import(o):o.endsWith(".json")&&(i=yield B(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);}};g.defaultConfigPath=path.join(process.cwd(),"release.json");var A=g;var {merge:_}=F__default.default,rt=(r=>(r.prompts="prompts",r.args="args",r.config="config",r))(rt||{}),C=class C{constructor(t){this.options=_({},C.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let r=this.options,{types:t}=r,o=u(r,["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 O(l(f({},o),{program:this.program}))),t.includes("config")&&(this.configCommand=new A(l(f({},o),{program:this.program}))),t.includes("prompts")&&(this.promptsCommand=new T(l(f({},o),{program:this.program}))));}start(t){var o,r,i,s;(o=this.promptsCommand)==null||o.start(t),(r=this.configCommand)==null||r.start(t),(i=this.argsCommand)==null||i.start(t),(s=this.program)==null||s.parse(process.argv);}};C.DEFAULT_OPTIONS=l(f({},e.DEFAULT_OPTIONS),{types:["args"],name:""});var j=C,Xt=j;function oo(n){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${n.name}`),logger.Logger.log("\u7248\u672C: "+n.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
- exports.AbstractCommand = e;
22
- exports.ArgsCommand = O;
23
- exports.Cli = Xt;
24
- exports.CommandManager = j;
25
- exports.CommandTypes = rt;
26
- exports.ConfigCommand = A;
27
- exports.OptionHandler = m;
28
- exports.PromptsCommand = T;
29
- exports.TYPES = d;
30
- exports.asFalseValues = nt;
31
- exports.asTrueValues = D;
32
- exports.echoPackage = oo;
21
+ exports.AbstractCommand = s;
22
+ exports.ArgsCommand = T;
23
+ exports.Cli = Oo;
24
+ exports.CommandManager = w;
25
+ exports.CommandTypes = pt;
26
+ exports.ConfigCommand = x;
27
+ exports.OptionsTransformer = m;
28
+ exports.PromptsCommand = O;
29
+ exports.TYPES = g;
30
+ exports.arrayType = P;
31
+ exports.asFalseValues = gt;
32
+ exports.asTrueValues = H;
33
+ exports.booleanType = k;
34
+ exports.echo = Ro;
35
+ exports.echoPackage = Vo;
36
+ exports.keyValueArrayType = V;
37
+ exports.numberType = N;
38
+ exports.objectArrayType = R;
39
+ exports.objectType = J;
33
40
  //# sourceMappingURL=index.js.map
34
41
  //# sourceMappingURL=index.js.map