@tikkhun/cli-core 0.0.30 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CommandManager.d.mts +4 -9
- package/dist/CommandManager.d.ts +4 -9
- package/dist/CommandManager.js +3 -3
- package/dist/CommandManager.js.map +1 -1
- package/dist/CommandManager.mjs +3 -3
- package/dist/CommandManager.mjs.map +1 -1
- package/dist/Info.js +1 -1
- package/dist/Info.mjs +1 -1
- package/dist/command/ArgsCommand.js +1 -1
- package/dist/command/ArgsCommand.js.map +1 -1
- package/dist/command/ArgsCommand.mjs +1 -1
- package/dist/command/ArgsCommand.mjs.map +1 -1
- package/dist/command/ConfigCommand.js +1 -1
- package/dist/command/ConfigCommand.mjs +1 -1
- package/dist/command/InfoCommand.d.mts +10 -0
- package/dist/command/InfoCommand.d.ts +10 -0
- package/dist/command/InfoCommand.js +5 -0
- package/dist/command/InfoCommand.js.map +1 -0
- package/dist/command/InfoCommand.mjs +5 -0
- package/dist/command/InfoCommand.mjs.map +1 -0
- package/dist/command/PromptsCommand.js +1 -1
- package/dist/command/PromptsCommand.mjs +1 -1
- package/dist/command/command.interface.js +1 -1
- package/dist/command/command.interface.mjs +1 -1
- package/dist/command/index.d.mts +1 -0
- package/dist/command/index.d.ts +1 -0
- package/dist/command/index.js +3 -3
- package/dist/command/index.js.map +1 -1
- package/dist/command/index.mjs +3 -3
- package/dist/command/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
'use strict';var commander=require('commander'),p=require('lodash'),logger=require('@tikkhun/logger');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var p__default=/*#__PURE__*/_interopDefault(p);/**
|
|
2
|
+
@tikkhun/cli-core@0.0.30
|
|
3
|
+
*/
|
|
4
|
+
var{merge:m}=p__default.default,n=class n{constructor(t){this.options=m({},n.DEFAULT_OPTIONS,t),this.init();}};n.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var i=n;function e(o){o.logo&&console.log(o.logo),logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${o.name}`),logger.Logger.log("\u7248\u672C: "+o.version);}var a=class extends i{init(){this.program=this.options.program||commander.createCommand();}start(){var t;(t=this.program)==null||t.addCommand(commander.createCommand("info").description("show info").action(()=>{e(this.options);}));}};exports.InfoCommand=a;//# sourceMappingURL=InfoCommand.js.map
|
|
5
|
+
//# sourceMappingURL=InfoCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/Info.ts","../../lib/command/InfoCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","echo","info","Logger","InfoCommand","createCommand","_a"],"mappings":";;;AAEA,GAAM,CAAE,KAAA,CAAAA,CAAM,CAAA,CAAIC,kBAAAA,CAuBIC,CAAAA,CAAf,MAAeA,CAAgB,CAapC,WAAA,CAAYC,CAAAA,CAAmC,CAE7C,IAAA,CAAK,OAAA,CAAUH,CAAAA,CAAM,EAAC,CAAGE,CAAAA,CAAgB,eAAA,CAAiBC,CAAO,CAAA,CACjE,KAAK,IAAA,GACP,CAGF,CAAA,CApBsBD,CAAAA,CACJ,eAAA,CAAkC,CAChD,OAAA,CAAS,MAAA,CACT,OAAA,CAAS,EAAA,CACT,WAAA,CAAa,EAAA,CACb,IAAA,CAAM,MAAA,CACN,cAAA,CAAgB,EAAC,CACjB,cAAA,CAAgB,EAAC,CACjB,WAAA,CAAa,EAAC,CACd,YAAA,CAAc,EAChB,CAAA,CAVK,IAAeE,CAAAA,CAAfF,CAAAA,CCdA,SAASG,CAAAA,CAAKC,CAAAA,CAA2B,CAE1CA,CAAAA,CAAK,IAAA,EAAM,OAAA,CAAQ,GAAA,CAAIA,CAAAA,CAAK,IAAI,CAAA,CAEpCC,aAAAA,CAAO,GAAA,CAAI,CAAA,2BAAA,EAAUD,CAAAA,CAAK,IAAI,CAAA,CAAE,CAAA,CAEhCC,aAAAA,CAAO,GAAA,CAAI,gBAAA,CAASD,CAAAA,CAAK,OAAO,EAClC,CCfO,IAAME,CAAAA,CAAN,cAA0BJ,CAAgB,CAG/C,MAAa,CACX,IAAA,CAAK,OAAA,CAAU,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAWK,uBAAAA,GACzC,CACA,KAAA,EAAc,CAThB,IAAAC,CAAAA,CAAAA,CAUIA,CAAAA,CAAA,IAAA,CAAK,OAAA,GAAL,MAAAA,CAAAA,CAAc,UAAA,CACZD,uBAAAA,CAAc,MAAM,CAAA,CACjB,WAAA,CAAY,WAAW,CAAA,CACvB,MAAA,CAAO,IAAM,CACZJ,CAAAA,CAAK,IAAA,CAAK,OAAO,EACnB,CAAC,GAEP,CACF","file":"InfoCommand.js","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n","import { Command, createCommand } from 'commander';\nimport { AbstractCommand, Action } from './command.interface';\nimport { echo } from '../Info';\nexport class InfoCommand extends AbstractCommand {\n program: Command | undefined;\n\n init(): void {\n this.program = this.options.program || createCommand();\n }\n start(): void {\n this.program?.addCommand(\n createCommand('info')\n .description('show info')\n .action(() => {\n echo(this.options);\n }),\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import {createCommand}from'commander';import p from'lodash';import {Logger}from'@tikkhun/logger';/**
|
|
2
|
+
@tikkhun/cli-core@0.0.30
|
|
3
|
+
*/
|
|
4
|
+
var{merge:m}=p,n=class n{constructor(t){this.options=m({},n.DEFAULT_OPTIONS,t),this.init();}};n.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var i=n;function e(o){o.logo&&console.log(o.logo),Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${o.name}`),Logger.log("\u7248\u672C: "+o.version);}var a=class extends i{init(){this.program=this.options.program||createCommand();}start(){var t;(t=this.program)==null||t.addCommand(createCommand("info").description("show info").action(()=>{e(this.options);}));}};export{a as InfoCommand};//# sourceMappingURL=InfoCommand.mjs.map
|
|
5
|
+
//# sourceMappingURL=InfoCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/Info.ts","../../lib/command/InfoCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","echo","info","Logger","InfoCommand","createCommand","_a"],"mappings":";;;AAEA,GAAM,CAAE,KAAA,CAAAA,CAAM,CAAA,CAAIC,CAAAA,CAuBIC,CAAAA,CAAf,MAAeA,CAAgB,CAapC,WAAA,CAAYC,CAAAA,CAAmC,CAE7C,IAAA,CAAK,OAAA,CAAUH,CAAAA,CAAM,EAAC,CAAGE,CAAAA,CAAgB,eAAA,CAAiBC,CAAO,CAAA,CACjE,KAAK,IAAA,GACP,CAGF,CAAA,CApBsBD,CAAAA,CACJ,eAAA,CAAkC,CAChD,OAAA,CAAS,MAAA,CACT,OAAA,CAAS,EAAA,CACT,WAAA,CAAa,EAAA,CACb,IAAA,CAAM,MAAA,CACN,cAAA,CAAgB,EAAC,CACjB,cAAA,CAAgB,EAAC,CACjB,WAAA,CAAa,EAAC,CACd,YAAA,CAAc,EAChB,CAAA,CAVK,IAAeE,CAAAA,CAAfF,CAAAA,CCdA,SAASG,CAAAA,CAAKC,CAAAA,CAA2B,CAE1CA,CAAAA,CAAK,IAAA,EAAM,OAAA,CAAQ,GAAA,CAAIA,CAAAA,CAAK,IAAI,CAAA,CAEpCC,MAAAA,CAAO,GAAA,CAAI,CAAA,2BAAA,EAAUD,CAAAA,CAAK,IAAI,CAAA,CAAE,CAAA,CAEhCC,MAAAA,CAAO,GAAA,CAAI,gBAAA,CAASD,CAAAA,CAAK,OAAO,EAClC,CCfO,IAAME,CAAAA,CAAN,cAA0BJ,CAAgB,CAG/C,MAAa,CACX,IAAA,CAAK,OAAA,CAAU,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAWK,aAAAA,GACzC,CACA,KAAA,EAAc,CAThB,IAAAC,CAAAA,CAAAA,CAUIA,CAAAA,CAAA,IAAA,CAAK,OAAA,GAAL,MAAAA,CAAAA,CAAc,UAAA,CACZD,aAAAA,CAAc,MAAM,CAAA,CACjB,WAAA,CAAY,WAAW,CAAA,CACvB,MAAA,CAAO,IAAM,CACZJ,CAAAA,CAAK,IAAA,CAAK,OAAO,EACnB,CAAC,GAEP,CACF","file":"InfoCommand.mjs","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n","import { Command, createCommand } from 'commander';\nimport { AbstractCommand, Action } from './command.interface';\nimport { echo } from '../Info';\nexport class InfoCommand extends AbstractCommand {\n program: Command | undefined;\n\n init(): void {\n this.program = this.options.program || createCommand();\n }\n start(): void {\n this.program?.addCommand(\n createCommand('info')\n .description('show info')\n .action(() => {\n echo(this.options);\n }),\n );\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';var prompts=require('@inquirer/prompts'),utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),A=require('lodash');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var A__default=/*#__PURE__*/_interopDefault(A);/**
|
|
2
|
-
@tikkhun/cli-core@0.0.
|
|
2
|
+
@tikkhun/cli-core@0.0.30
|
|
3
3
|
*/
|
|
4
4
|
var f=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var u=(e,i)=>{var o={};for(var t in e)h.call(e,t)&&i.indexOf(t)<0&&(o[t]=e[t]);if(e!=null&&f)for(var t of f(e))i.indexOf(t)<0&&T.call(e,t)&&(o[t]=e[t]);return o};var p=(e,i,o)=>new Promise((t,n)=>{var s=a=>{try{l(o.next(a));}catch(m){n(m);}},r=a=>{try{l(o.throw(a));}catch(m){n(m);}},l=a=>a.done?t(a.value):Promise.resolve(a.value).then(s,r);l((o=o.apply(e,i)).next());});var{merge:R}=A__default.default,d=class d{constructor(i){this.options=R({},d.DEFAULT_OPTIONS,i),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var O=class extends c{getOptions(){let i=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:i}),t=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:r})=>({key:s,defaultValue:r,type:t[s],title:n[s]}))}init(){let i=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:t,defaultValue:n,type:s,title:r}of i)s&&r&&(o[t]=(yield this.getActionResult({type:s,message:r,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(i){return p(this,null,function*(){let n=i,{type:o}=n,t=u(n,["type"]);return yield prompts.input(t)})}actionHandler(i){return p(this,null,function*(){let o=yield this.optionHandler(),t=utilsCore.unflatNestedObject({delimiter:".",data:o}),n=nestedArgs.NestedArgs.parse(t,{schema:this.options.optionTypes});i(n);})}start(i){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(i));return}this.actionHandler(i);})}};exports.PromptsCommand=O;//# sourceMappingURL=PromptsCommand.js.map
|
|
5
5
|
//# sourceMappingURL=PromptsCommand.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {input}from'@inquirer/prompts';import {nestedObjectToList,flatNestedObject,unflatNestedObject}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import A from'lodash';/**
|
|
2
|
-
@tikkhun/cli-core@0.0.
|
|
2
|
+
@tikkhun/cli-core@0.0.30
|
|
3
3
|
*/
|
|
4
4
|
var f=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var u=(e,i)=>{var o={};for(var t in e)h.call(e,t)&&i.indexOf(t)<0&&(o[t]=e[t]);if(e!=null&&f)for(var t of f(e))i.indexOf(t)<0&&T.call(e,t)&&(o[t]=e[t]);return o};var p=(e,i,o)=>new Promise((t,n)=>{var s=a=>{try{l(o.next(a));}catch(m){n(m);}},r=a=>{try{l(o.throw(a));}catch(m){n(m);}},l=a=>a.done?t(a.value):Promise.resolve(a.value).then(s,r);l((o=o.apply(e,i)).next());});var{merge:R}=A,d=class d{constructor(i){this.options=R({},d.DEFAULT_OPTIONS,i),this.init();}};d.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var c=d;var O=class extends c{getOptions(){let i=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=nestedObjectToList({delimiter:".",json:i}),t=flatNestedObject({delimiter:".",data:this.options.optionTypes}),n=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:s,value:r})=>({key:s,defaultValue:r,type:t[s],title:n[s]}))}init(){let i=this.getOptions();this.optionHandler=()=>p(this,null,function*(){let o={};for(let{key:t,defaultValue:n,type:s,title:r}of i)s&&r&&(o[t]=(yield this.getActionResult({type:s,message:r,default:n}))||n);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(i){return p(this,null,function*(){let n=i,{type:o}=n,t=u(n,["type"]);return yield input(t)})}actionHandler(i){return p(this,null,function*(){let o=yield this.optionHandler(),t=unflatNestedObject({delimiter:".",data:o}),n=NestedArgs.parse(t,{schema:this.options.optionTypes});i(n);})}start(i){return p(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(i));return}this.actionHandler(i);})}};export{O as PromptsCommand};//# sourceMappingURL=PromptsCommand.mjs.map
|
|
5
5
|
//# sourceMappingURL=PromptsCommand.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';var n=require('lodash');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var n__default=/*#__PURE__*/_interopDefault(n);/**
|
|
2
|
-
@tikkhun/cli-core@0.0.
|
|
2
|
+
@tikkhun/cli-core@0.0.30
|
|
3
3
|
*/
|
|
4
4
|
var{merge:e}=n__default.default,t=class t{constructor(i){this.options=e({},t.DEFAULT_OPTIONS,i),this.init();}};t.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var o=t;exports.AbstractCommand=o;//# sourceMappingURL=command.interface.js.map
|
|
5
5
|
//# sourceMappingURL=command.interface.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import n from'lodash';/**
|
|
2
|
-
@tikkhun/cli-core@0.0.
|
|
2
|
+
@tikkhun/cli-core@0.0.30
|
|
3
3
|
*/
|
|
4
4
|
var{merge:e}=n,t=class t{constructor(i){this.options=e({},t.DEFAULT_OPTIONS,i),this.init();}};t.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var o=t;export{o as AbstractCommand};//# sourceMappingURL=command.interface.mjs.map
|
|
5
5
|
//# sourceMappingURL=command.interface.mjs.map
|
package/dist/command/index.d.mts
CHANGED
|
@@ -2,5 +2,6 @@ export { ArgsCommand } from './ArgsCommand.mjs';
|
|
|
2
2
|
export { GetActionResultOptions, PromptsCommand } from './PromptsCommand.mjs';
|
|
3
3
|
export { AbstractCommand, Action, CommandOptions } from './command.interface.mjs';
|
|
4
4
|
export { ConfigCommand } from './ConfigCommand.mjs';
|
|
5
|
+
export { InfoCommand } from './InfoCommand.mjs';
|
|
5
6
|
import 'commander';
|
|
6
7
|
import '@tikkhun/nested-args';
|
package/dist/command/index.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ export { ArgsCommand } from './ArgsCommand.js';
|
|
|
2
2
|
export { GetActionResultOptions, PromptsCommand } from './PromptsCommand.js';
|
|
3
3
|
export { AbstractCommand, Action, CommandOptions } from './command.interface.js';
|
|
4
4
|
export { ConfigCommand } from './ConfigCommand.js';
|
|
5
|
+
export { InfoCommand } from './InfoCommand.js';
|
|
5
6
|
import 'commander';
|
|
6
7
|
import '@tikkhun/nested-args';
|
package/dist/command/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use strict';var utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),
|
|
2
|
-
@tikkhun/cli-core@0.0.
|
|
1
|
+
'use strict';var utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),P=require('lodash'),commander=require('commander'),configLoader=require('@tikkhun/config-loader'),prompts=require('@inquirer/prompts'),J=require('fs-extra'),path=require('path'),logger=require('@tikkhun/logger');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var P__default=/*#__PURE__*/_interopDefault(P);var J__default=/*#__PURE__*/_interopDefault(J);/**
|
|
2
|
+
@tikkhun/cli-core@0.0.30
|
|
3
3
|
*/
|
|
4
|
-
var h=Object.getOwnPropertySymbols;var
|
|
4
|
+
var h=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var g=(s,t)=>{var o={};for(var n in s)j.call(s,n)&&t.indexOf(n)<0&&(o[n]=s[n]);if(s!=null&&h)for(var n of h(s))t.indexOf(n)<0&&L.call(s,n)&&(o[n]=s[n]);return o};var r=(s,t,o)=>new Promise((n,i)=>{var e=p=>{try{m(o.next(p));}catch(l){i(l);}},c=p=>{try{m(o.throw(p));}catch(l){i(l);}},m=p=>p.done?n(p.value):Promise.resolve(p.value).then(e,c);m((o=o.apply(s,t)).next());});var{merge:S}=P__default.default,f=class f{constructor(t){this.options=S({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var a=f;var {get:G}=P__default.default,y=class extends a{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),n=utilsCore.flatNestedObject({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]})),{key:"config",value:"",type:"string",title:"\u914D\u7F6E"}]}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,title:e})=>{this.program.option(`--${o} <${i}>`,e||G(this.options.optionTitles,o),n);});}addAction(t){this.program.action(o=>r(this,null,function*(){let m=o,{config:n}=m,i=g(m,["config"]);if(!n){let p=yield this.getOptionsByArgs(i);t(p);return}let e=yield this.getOptionsByFile(n);console.log("fileOptions",e);let c=utilsCore.mergeOptions(e,this.getOptionsByArgs(i));t(c);}));}getOptionsByFile(t){return r(this,null,function*(){if(t)return yield configLoader.loadConfig(t)})}getOptionsByArgs(t){let o=utilsCore.unflatNestedObject({delimiter:".",data:t});return nestedArgs.NestedArgs.parse(o,{schema:this.options.optionTypes})}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var x=class extends a{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:e,value:c})=>({key:e,defaultValue:c,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>r(this,null,function*(){let o={};for(let{key:n,defaultValue:i,type:e,title:c}of t)e&&c&&(o[n]=(yield this.getActionResult({type:e,message:c,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return r(this,null,function*(){let i=t,{type:o}=i,n=g(i,["type"]);return yield prompts.input(n)})}actionHandler(t){return r(this,null,function*(){let o=yield this.optionHandler(),n=utilsCore.unflatNestedObject({delimiter:".",data:o}),i=nestedArgs.NestedArgs.parse(n,{schema:this.options.optionTypes});t(i);})}start(t){return r(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:Ot,writeJson:M}=J__default.default,d=class d extends a{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||commander.createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(n=>r(this,null,function*(){let{path:i}=n;i||(i=d.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield M(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",d.defaultConfigPath);}addAction(t){this.program.action(n=>r(this,[n],function*({config:o=""}){let i=yield configLoader.loadConfig(o);if(!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);}};d.defaultConfigPath=path.join(process.cwd(),"release.json");var v=d;function w(s){s.logo&&console.log(s.logo),logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),logger.Logger.log("\u7248\u672C: "+s.version);}var R=class extends a{init(){this.program=this.options.program||commander.createCommand();}start(){var t;(t=this.program)==null||t.addCommand(commander.createCommand("info").description("show info").action(()=>{w(this.options);}));}};exports.AbstractCommand=a;exports.ArgsCommand=y;exports.ConfigCommand=v;exports.InfoCommand=R;exports.PromptsCommand=x;//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts","../../lib/command/PromptsCommand.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","title","action","__async","_a","configPath","restStringOptions","__objRest","fileOptions","mergeOptions","filePath","loadConfig","args","unflatNestedObject","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","result","defaultValue","opts","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","join","ConfigCommand"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, mergeOptions, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nimport { loadConfig } from '@tikkhun/config-loader';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n title?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return [\n ...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 {\n key: 'config',\n value: '',\n type: 'string',\n title: '配置',\n },\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, title }) => {\n this.program!.option(`--${key} <${type}>`, title || get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action(async (stringOptions) => {\n // 加了一个尾巴就是文件的config\n const { config: configPath, ...restStringOptions } = stringOptions;\n if (!configPath) {\n const options = await this.getOptionsByArgs(restStringOptions);\n action(options);\n return;\n }\n const fileOptions = await this.getOptionsByFile(configPath);\n console.log(`fileOptions`, fileOptions);\n const options = mergeOptions(fileOptions, this.getOptionsByArgs(restStringOptions));\n action(options);\n });\n }\n async getOptionsByFile(filePath: string) {\n if (!filePath) return;\n return await loadConfig(filePath);\n }\n getOptionsByArgs(args: any) {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: args,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n return typedOptions;\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts","../../lib/command/PromptsCommand.ts","../../lib/command/ConfigCommand.ts","../../lib/Info.ts","../../lib/command/InfoCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","title","action","__async","_a","configPath","restStringOptions","__objRest","fileOptions","mergeOptions","filePath","loadConfig","args","unflatNestedObject","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","result","defaultValue","opts","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","join","ConfigCommand","echo","info","InfoCommand"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, mergeOptions, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nimport { loadConfig } from '@tikkhun/config-loader';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n title?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return [\n ...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 {\n key: 'config',\n value: '',\n type: 'string',\n title: '配置',\n },\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, title }) => {\n this.program!.option(`--${key} <${type}>`, title || get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action(async (stringOptions) => {\n // 加了一个尾巴就是文件的config\n const { config: configPath, ...restStringOptions } = stringOptions;\n\n if (!configPath) {\n const options = await this.getOptionsByArgs(restStringOptions);\n action(options);\n return;\n }\n const fileOptions = await this.getOptionsByFile(configPath);\n console.log(`fileOptions`, fileOptions);\n const options = mergeOptions(fileOptions, this.getOptionsByArgs(restStringOptions));\n action(options);\n });\n }\n async getOptionsByFile(filePath: string) {\n if (!filePath) return;\n return await loadConfig(filePath);\n }\n getOptionsByArgs(args: any) {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: args,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n return typedOptions;\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n","import { Command, createCommand } from 'commander';\nimport { AbstractCommand, Action } from './command.interface';\nimport { echo } from '../Info';\nexport class InfoCommand extends AbstractCommand {\n program: Command | undefined;\n\n init(): void {\n this.program = this.options.program || createCommand();\n }\n start(): void {\n this.program?.addCommand(\n createCommand('info')\n .description('show info')\n .action(() => {\n echo(this.options);\n }),\n );\n }\n}\n"]}
|
package/dist/command/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {nestedObjectToList,flatNestedObject,unflatNestedObject,mergeOptions}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import
|
|
2
|
-
@tikkhun/cli-core@0.0.
|
|
1
|
+
import {nestedObjectToList,flatNestedObject,unflatNestedObject,mergeOptions}from'@tikkhun/utils-core';import {NestedArgs}from'@tikkhun/nested-args';import P from'lodash';import {createCommand}from'commander';import {loadConfig}from'@tikkhun/config-loader';import {input}from'@inquirer/prompts';import J from'fs-extra';import {join}from'path';import {Logger}from'@tikkhun/logger';/**
|
|
2
|
+
@tikkhun/cli-core@0.0.30
|
|
3
3
|
*/
|
|
4
|
-
var h=Object.getOwnPropertySymbols;var
|
|
4
|
+
var h=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var g=(s,t)=>{var o={};for(var n in s)j.call(s,n)&&t.indexOf(n)<0&&(o[n]=s[n]);if(s!=null&&h)for(var n of h(s))t.indexOf(n)<0&&L.call(s,n)&&(o[n]=s[n]);return o};var r=(s,t,o)=>new Promise((n,i)=>{var e=p=>{try{m(o.next(p));}catch(l){i(l);}},c=p=>{try{m(o.throw(p));}catch(l){i(l);}},m=p=>p.done?n(p.value):Promise.resolve(p.value).then(e,c);m((o=o.apply(s,t)).next());});var{merge:S}=P,f=class f{constructor(t){this.options=S({},f.DEFAULT_OPTIONS,t),this.init();}};f.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var a=f;var {get:G}=P,y=class extends a{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=nestedObjectToList({delimiter:".",json:t}),n=flatNestedObject({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]})),{key:"config",value:"",type:"string",title:"\u914D\u7F6E"}]}init(){this.program=this.options.program||createCommand();let t=this.getOptions();this.addOptions(t);}addOptions(t){t.forEach(({key:o,value:n,type:i,title:e})=>{this.program.option(`--${o} <${i}>`,e||G(this.options.optionTitles,o),n);});}addAction(t){this.program.action(o=>r(this,null,function*(){let m=o,{config:n}=m,i=g(m,["config"]);if(!n){let p=yield this.getOptionsByArgs(i);t(p);return}let e=yield this.getOptionsByFile(n);console.log("fileOptions",e);let c=mergeOptions(e,this.getOptionsByArgs(i));t(c);}));}getOptionsByFile(t){return r(this,null,function*(){if(t)return yield loadConfig(t)})}getOptionsByArgs(t){let o=unflatNestedObject({delimiter:".",data:t});return NestedArgs.parse(o,{schema:this.options.optionTypes})}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var x=class extends a{getOptions(){let t=NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=nestedObjectToList({delimiter:".",json:t}),n=flatNestedObject({delimiter:".",data:this.options.optionTypes}),i=flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:e,value:c})=>({key:e,defaultValue:c,type:n[e],title:i[e]}))}init(){let t=this.getOptions();this.optionHandler=()=>r(this,null,function*(){let o={};for(let{key:n,defaultValue:i,type:e,title:c}of t)e&&c&&(o[n]=(yield this.getActionResult({type:e,message:c,default:i}))||i);return o}),this.options.program&&(this.command=this.options.program.command("prompts"));}getActionResult(t){return r(this,null,function*(){let i=t,{type:o}=i,n=g(i,["type"]);return yield input(n)})}actionHandler(t){return r(this,null,function*(){let o=yield this.optionHandler(),n=unflatNestedObject({delimiter:".",data:o}),i=NestedArgs.parse(n,{schema:this.options.optionTypes});t(i);})}start(t){return r(this,null,function*(){if(this.command){this.command.action(()=>this.actionHandler(t));return}this.actionHandler(t);})}};var{readJson:Ot,writeJson:M}=J,d=class d extends a{init(){var t,o;this.program=((t=this.options.program)==null?void 0:t.command("config"))||createCommand(),(o=this.program)==null||o.command("init").option("-p --path <string>","\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84",d.defaultConfigPath).action(n=>r(this,null,function*(){let{path:i}=n;i||(i=d.defaultConfigPath),Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield M(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",d.defaultConfigPath);}addAction(t){this.program.action(n=>r(this,[n],function*({config:o=""}){let i=yield loadConfig(o);if(!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);}};d.defaultConfigPath=join(process.cwd(),"release.json");var v=d;function w(s){s.logo&&console.log(s.logo),Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),Logger.log("\u7248\u672C: "+s.version);}var R=class extends a{init(){this.program=this.options.program||createCommand();}start(){var t;(t=this.program)==null||t.addCommand(createCommand("info").description("show info").action(()=>{w(this.options);}));}};export{a as AbstractCommand,y as ArgsCommand,v as ConfigCommand,R as InfoCommand,x as PromptsCommand};//# sourceMappingURL=index.mjs.map
|
|
5
5
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts","../../lib/command/PromptsCommand.ts","../../lib/command/ConfigCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","title","action","__async","_a","configPath","restStringOptions","__objRest","fileOptions","mergeOptions","filePath","loadConfig","args","unflatNestedObject","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","result","defaultValue","opts","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","join","ConfigCommand"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, mergeOptions, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nimport { loadConfig } from '@tikkhun/config-loader';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n title?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return [\n ...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 {\n key: 'config',\n value: '',\n type: 'string',\n title: '配置',\n },\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, title }) => {\n this.program!.option(`--${key} <${type}>`, title || get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action(async (stringOptions) => {\n // 加了一个尾巴就是文件的config\n const { config: configPath, ...restStringOptions } = stringOptions;\n if (!configPath) {\n const options = await this.getOptionsByArgs(restStringOptions);\n action(options);\n return;\n }\n const fileOptions = await this.getOptionsByFile(configPath);\n console.log(`fileOptions`, fileOptions);\n const options = mergeOptions(fileOptions, this.getOptionsByArgs(restStringOptions));\n action(options);\n });\n }\n async getOptionsByFile(filePath: string) {\n if (!filePath) return;\n return await loadConfig(filePath);\n }\n getOptionsByArgs(args: any) {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: args,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n return typedOptions;\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts","../../lib/command/ArgsCommand.ts","../../lib/command/PromptsCommand.ts","../../lib/command/ConfigCommand.ts","../../lib/Info.ts","../../lib/command/InfoCommand.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","title","action","__async","_a","configPath","restStringOptions","__objRest","fileOptions","mergeOptions","filePath","loadConfig","args","unflatNestedObject","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","result","defaultValue","opts","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","join","ConfigCommand","echo","info","InfoCommand"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","import { flatNestedObject, mergeOptions, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nimport { loadConfig } from '@tikkhun/config-loader';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n title?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return [\n ...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 {\n key: 'config',\n value: '',\n type: 'string',\n title: '配置',\n },\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, title }) => {\n this.program!.option(`--${key} <${type}>`, title || get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action(async (stringOptions) => {\n // 加了一个尾巴就是文件的config\n const { config: configPath, ...restStringOptions } = stringOptions;\n\n if (!configPath) {\n const options = await this.getOptionsByArgs(restStringOptions);\n action(options);\n return;\n }\n const fileOptions = await this.getOptionsByFile(configPath);\n console.log(`fileOptions`, fileOptions);\n const options = mergeOptions(fileOptions, this.getOptionsByArgs(restStringOptions));\n action(options);\n });\n }\n async getOptionsByFile(filePath: string) {\n if (!filePath) return;\n return await loadConfig(filePath);\n }\n getOptionsByArgs(args: any) {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: args,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n return typedOptions;\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n","import { Command, createCommand } from 'commander';\nimport { AbstractCommand, Action } from './command.interface';\nimport { echo } from '../Info';\nexport class InfoCommand extends AbstractCommand {\n program: Command | undefined;\n\n init(): void {\n this.program = this.options.program || createCommand();\n }\n start(): void {\n this.program?.addCommand(\n createCommand('info')\n .description('show info')\n .action(() => {\n echo(this.options);\n }),\n );\n }\n}\n"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -2,6 +2,7 @@ export { ArgsCommand } from './command/ArgsCommand.mjs';
|
|
|
2
2
|
export { GetActionResultOptions, PromptsCommand } from './command/PromptsCommand.mjs';
|
|
3
3
|
export { AbstractCommand, Action, CommandOptions } from './command/command.interface.mjs';
|
|
4
4
|
export { ConfigCommand } from './command/ConfigCommand.mjs';
|
|
5
|
+
export { InfoCommand } from './command/InfoCommand.mjs';
|
|
5
6
|
export { Cli, CommandManager, CommandManagerOptions, CommandTypes } from './CommandManager.mjs';
|
|
6
7
|
export { echo, echoPackage } from './Info.mjs';
|
|
7
8
|
import 'commander';
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { ArgsCommand } from './command/ArgsCommand.js';
|
|
|
2
2
|
export { GetActionResultOptions, PromptsCommand } from './command/PromptsCommand.js';
|
|
3
3
|
export { AbstractCommand, Action, CommandOptions } from './command/command.interface.js';
|
|
4
4
|
export { ConfigCommand } from './command/ConfigCommand.js';
|
|
5
|
+
export { InfoCommand } from './command/InfoCommand.js';
|
|
5
6
|
export { Cli, CommandManager, CommandManagerOptions, CommandTypes } from './CommandManager.js';
|
|
6
7
|
export { echo, echoPackage } from './Info.js';
|
|
7
8
|
import 'commander';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use strict';var utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),
|
|
2
|
-
@tikkhun/cli-core@0.0.
|
|
1
|
+
'use strict';var utilsCore=require('@tikkhun/utils-core'),nestedArgs=require('@tikkhun/nested-args'),I=require('lodash'),commander=require('commander'),configLoader=require('@tikkhun/config-loader'),prompts=require('@inquirer/prompts'),X=require('fs-extra'),path=require('path'),logger=require('@tikkhun/logger');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var I__default=/*#__PURE__*/_interopDefault(I);var X__default=/*#__PURE__*/_interopDefault(X);/**
|
|
2
|
+
@tikkhun/cli-core@0.0.30
|
|
3
3
|
*/
|
|
4
|
-
var
|
|
4
|
+
var F=Object.defineProperty,H=Object.defineProperties;var B=Object.getOwnPropertyDescriptors;var f=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable;var L=(s,t,o)=>t in s?F(s,t,{enumerable:true,configurable:true,writable:true,value:o}):s[t]=o,x=(s,t)=>{for(var o in t||(t={}))b.call(t,o)&&L(s,o,t[o]);if(f)for(var o of f(t))E.call(t,o)&&L(s,o,t[o]);return s},v=(s,t)=>H(s,B(t));var d=(s,t)=>{var o={};for(var n in s)b.call(s,n)&&t.indexOf(n)<0&&(o[n]=s[n]);if(s!=null&&f)for(var n of f(s))t.indexOf(n)<0&&E.call(s,n)&&(o[n]=s[n]);return o};var a=(s,t,o)=>new Promise((n,i)=>{var r=p=>{try{c(o.next(p));}catch(T){i(T);}},m=p=>{try{c(o.throw(p));}catch(T){i(T);}},c=p=>p.done?n(p.value):Promise.resolve(p.value).then(r,m);c((o=o.apply(s,t)).next());});var{merge:U}=I__default.default,l=class l{constructor(t){this.options=U({},l.DEFAULT_OPTIONS,t),this.init();}};l.DEFAULT_OPTIONS={program:void 0,version:"",description:"",logo:void 0,defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var e=l;var {get:k}=I__default.default,h=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes});return [...o.filter(({key:i})=>!this.options.excludeOptions.includes(i)).map(({key:i,value:r})=>({key:i,value:r,type:n[i]})),{key:"config",value:"",type:"string",title:"\u914D\u7F6E"}]}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,title:r})=>{this.program.option(`--${o} <${i}>`,r||k(this.options.optionTitles,o),n);});}addAction(t){this.program.action(o=>a(this,null,function*(){let c=o,{config:n}=c,i=d(c,["config"]);if(!n){let p=yield this.getOptionsByArgs(i);t(p);return}let r=yield this.getOptionsByFile(n);console.log("fileOptions",r);let m=utilsCore.mergeOptions(r,this.getOptionsByArgs(i));t(m);}));}getOptionsByFile(t){return a(this,null,function*(){if(t)return yield configLoader.loadConfig(t)})}getOptionsByArgs(t){let o=utilsCore.unflatNestedObject({delimiter:".",data:t});return nestedArgs.NestedArgs.parse(o,{schema:this.options.optionTypes})}start(t){this.addAction(t),this.options.program||this.program.parse(process.argv);}};var u=class extends e{getOptions(){let t=nestedArgs.NestedArgs.stringify(this.options.defaultOptions,{schema:this.options.optionTypes}),o=utilsCore.nestedObjectToList({delimiter:".",json:t}),n=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTypes}),i=utilsCore.flatNestedObject({delimiter:".",data:this.options.optionTitles});return o.map(({key:r,value:m})=>({key:r,defaultValue:m,type:n[r],title:i[r]}))}init(){let t=this.getOptions();this.optionHandler=()=>a(this,null,function*(){let o={};for(let{key:n,defaultValue:i,type:r,title:m}of t)r&&m&&(o[n]=(yield this.getActionResult({type:r,message:m,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,{type:o}=i,n=d(i,["type"]);return yield prompts.input(n)})}actionHandler(t){return a(this,null,function*(){let o=yield this.optionHandler(),n=utilsCore.unflatNestedObject({delimiter:".",data:o}),i=nestedArgs.NestedArgs.parse(n,{schema: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:Nt,writeJson:Z}=X__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(n=>a(this,null,function*(){let{path:i}=n;i||(i=g.defaultConfigPath),logger.Logger.log("[\u5F00\u59CB] \u521D\u59CB\u5316\u914D\u7F6E\u6587\u4EF6\uFF1A "+i),yield Z(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(n=>a(this,[n],function*({config:o=""}){let i=yield configLoader.loadConfig(o);if(!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 y=g;function $t(s){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),logger.Logger.log("\u7248\u672C: "+s.version);}function j(s){s.logo&&console.log(s.logo),logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${s.name}`),logger.Logger.log("\u7248\u672C: "+s.version);}var A=class extends e{init(){this.program=this.options.program||commander.createCommand();}start(){var t;(t=this.program)==null||t.addCommand(commander.createCommand("info").description("show info").action(()=>{j(this.options);}));}};var st=(i=>(i.prompts="prompts",i.args="args",i.config="config",i.info="info",i))(st||{}),C=class C{constructor(t){this.commands=[];this.options=utilsCore.mergeOptions(C.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.options.immediatelyWelcome&&this.welcome(),this.init();}welcome(){this.options.logo&&console.log(this.options.logo),this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let i=this.options,{types:t}=i,o=d(i,["types"]);if(!t||!t.length)throw new Error("types is undefined");if(t.length===1&&t[0]==="prompts")return;this.program=commander.createCommand();let n={args:h,config:y,prompts:u,info:A};t.forEach(r=>{this.commands.push(new n[r](v(x({},o),{program:this.program})));});}start(t){var o;if(t||(t=this.options.action),!t)throw new Error("action is undefined");this.commands.forEach(n=>{n.start(t);}),(o=this.program)==null||o.parse(process.argv);}};C.DEFAULT_OPTIONS=v(x({},e.DEFAULT_OPTIONS),{name:"",types:["args","info"],immediatelyWelcome:false});var w=C,co=w;exports.AbstractCommand=e;exports.ArgsCommand=h;exports.Cli=co;exports.CommandManager=w;exports.CommandTypes=st;exports.ConfigCommand=y;exports.InfoCommand=A;exports.PromptsCommand=u;exports.echo=j;exports.echoPackage=$t;//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/command/ArgsCommand.ts","../lib/command/command.interface.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/CommandManager.ts","../lib/Info.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","title","action","__async","_a","configPath","restStringOptions","__objRest","fileOptions","mergeOptions","filePath","loadConfig","args","unflatNestedObject","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","result","defaultValue","opts","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","join","ConfigCommand","CommandTypes","_CommandManager","types","__spreadProps","__spreadValues","_c","_d","CommandManager","Cli","echoPackage","packageJson","echo","info"],"mappings":"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","file":"index.js","sourcesContent":["import { flatNestedObject, mergeOptions, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nimport { loadConfig } from '@tikkhun/config-loader';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n title?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return [\n ...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 {\n key: 'config',\n value: '',\n type: 'string',\n title: '配置',\n },\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, title }) => {\n this.program!.option(`--${key} <${type}>`, title || get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action(async (stringOptions) => {\n // 加了一个尾巴就是文件的config\n const { config: configPath, ...restStringOptions } = stringOptions;\n if (!configPath) {\n const options = await this.getOptionsByArgs(restStringOptions);\n action(options);\n return;\n }\n const fileOptions = await this.getOptionsByFile(configPath);\n console.log(`fileOptions`, fileOptions);\n const options = mergeOptions(fileOptions, this.getOptionsByArgs(restStringOptions));\n action(options);\n });\n }\n async getOptionsByFile(filePath: string) {\n if (!filePath) return;\n return await loadConfig(filePath);\n }\n getOptionsByArgs(args: any) {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: args,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n return typedOptions;\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n configCommand?: ConfigCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.config)) {\n this.configCommand = new ConfigCommand({ ...options, program: this.program });\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand({ ...options, program: this.program });\n }\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.promptsCommand?.start(action);\n this.configCommand?.start(action);\n this.argsCommand?.start(action);\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../lib/command/ArgsCommand.ts","../lib/command/command.interface.ts","../lib/command/PromptsCommand.ts","../lib/command/ConfigCommand.ts","../lib/Info.ts","../lib/command/InfoCommand.ts","../lib/CommandManager.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","stringOptions","NestedArgs","optionList","nestedObjectToList","optionTypeMap","flatNestedObject","key","value","createCommand","type","title","action","__async","_a","configPath","restStringOptions","__objRest","fileOptions","mergeOptions","filePath","loadConfig","args","unflatNestedObject","PromptsCommand","stringifyDefaultOptions","flattedStringifyDefaultOptionList","flattedOptionTypeList","flattedOptionTitleList","result","defaultValue","opts","input","unflattedOptions","typedResults","readJson","writeJson","fsExtra","_ConfigCommand","_b","path","Logger","_0","config","join","ConfigCommand","echoPackage","packageJson","echo","info","InfoCommand","CommandTypes","_CommandManager","types","map","__spreadProps","__spreadValues","command","CommandManager","Cli"],"mappings":"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","file":"index.js","sourcesContent":["import { flatNestedObject, mergeOptions, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand, program } from 'commander';\nimport _ from 'lodash';\nimport { loadConfig } from '@tikkhun/config-loader';\nconst { get } = _;\ninterface ArgsOption {\n key: string;\n value?: any;\n type?: string;\n title?: string;\n}\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n getOptions(): ArgsOption[] {\n const stringOptions = NestedArgs.stringify(this.options.defaultOptions, { schema: this.options.optionTypes });\n const optionList = nestedObjectToList({ delimiter: '.', json: stringOptions });\n // console.log(`optionList`, optionList);\n const optionTypeMap = flatNestedObject({ delimiter: '.', data: this.options.optionTypes });\n return [\n ...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 {\n key: 'config',\n value: '',\n type: 'string',\n title: '配置',\n },\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, title }) => {\n this.program!.option(`--${key} <${type}>`, title || get(this.options.optionTitles, key), value);\n });\n }\n private addAction(action: Action) {\n this.program!.action(async (stringOptions) => {\n // 加了一个尾巴就是文件的config\n const { config: configPath, ...restStringOptions } = stringOptions;\n\n if (!configPath) {\n const options = await this.getOptionsByArgs(restStringOptions);\n action(options);\n return;\n }\n const fileOptions = await this.getOptionsByFile(configPath);\n console.log(`fileOptions`, fileOptions);\n const options = mergeOptions(fileOptions, this.getOptionsByArgs(restStringOptions));\n action(options);\n });\n }\n async getOptionsByFile(filePath: string) {\n if (!filePath) return;\n return await loadConfig(filePath);\n }\n getOptionsByArgs(args: any) {\n // 转换一下传入参数\n const options = unflatNestedObject({\n delimiter: '.',\n data: args,\n });\n const typedOptions = NestedArgs.parse(options, { schema: this.options.optionTypes });\n return typedOptions;\n }\n start(action: Action) {\n this.addAction(action);\n // 如果传入program 则让外部控制\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","import { Command } from 'commander';\nimport _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): any;\n}\ninterface Schema {\n // TODO 用类似json schema 的方式去弄选项\n default: any;\n title: string;\n type: string;\n}\nexport interface CommandOptions {\n program?: Command;\n version: string;\n description: string;\n logo?: string;\n optionsSchema?: Schema;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n action?: Action;\n}\n\nexport abstract class AbstractCommand {\n static readonly DEFAULT_OPTIONS: CommandOptions = {\n program: undefined,\n version: '',\n description: '',\n logo: undefined,\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n // console.log(`options`, options);\n this.options = merge({}, AbstractCommand.DEFAULT_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action?: Action): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatNestedObject, nestedObjectToList, unflatNestedObject } from '@tikkhun/utils-core';\nimport { NestedArgs, TYPES } from '@tikkhun/nested-args';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\n\nexport class PromptsCommand extends AbstractCommand {\n command: any;\n optionHandler: any;\n getOptions() {\n const stringifyDefaultOptions = NestedArgs.stringify(this.options.defaultOptions, {\n schema: this.options.optionTypes,\n });\n // 默认选项\n const flattedStringifyDefaultOptionList = nestedObjectToList({\n delimiter: '.',\n json: stringifyDefaultOptions,\n });\n const flattedOptionTypeList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitleList = flatNestedObject({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n return flattedStringifyDefaultOptionList.map(({ key, value }) => {\n return {\n key: key,\n defaultValue: value,\n type: flattedOptionTypeList[key],\n title: flattedOptionTitleList[key],\n };\n });\n }\n init() {\n const options = this.getOptions();\n // console.log(`options`, options);\n // console.log(`options`, options);\n this.optionHandler = async () => {\n const result: Record<string, any> = {};\n for (const { key, defaultValue, type, title } of options) {\n if (!type) {\n continue;\n }\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult({ type, message: title, default: defaultValue })) || defaultValue;\n }\n return result;\n };\n // 又有 args 又有 prompts\n if (this.options.program) {\n this.command = this.options.program.command('prompts');\n }\n }\n private async getActionResult(options: GetActionResultOptions) {\n const { type, ...opts } = options;\n return await input(opts);\n }\n private async actionHandler(action: Action) {\n const options = await this.optionHandler();\n const unflattedOptions = unflatNestedObject({ delimiter: '.', data: options });\n const typedResults = NestedArgs.parse(unflattedOptions, { schema: this.options.optionTypes });\n action(typedResults);\n }\n async start(action: Action) {\n if (this.command) {\n this.command.action(() => this.actionHandler(action));\n return;\n }\n this.actionHandler(action);\n }\n}\n\nexport interface GetActionResultOptions {\n type: TYPES;\n message: string;\n default: any;\n}\n","import { Command, createCommand } from 'commander';\nimport fsExtra from 'fs-extra';\nconst { readJson, writeJson } = fsExtra;\nimport { join } from 'path';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Logger } from '@tikkhun/logger';\nimport { loadConfig } from '@tikkhun/config-loader';\nexport class ConfigCommand extends AbstractCommand {\n static defaultConfigPath = join(process.cwd(), 'release.json');\n program: Command | undefined;\n init(): void {\n // console.log(`this.options.program`, this.options.program);\n this.program = this.options.program?.command('config') || createCommand();\n // 这里要获取默认选项便于处理\n this.program\n ?.command('init')\n .option('-p --path <string>', '配置文件路径', ConfigCommand.defaultConfigPath)\n .action(async (options) => {\n let { path } = options;\n if (!path) {\n path = ConfigCommand.defaultConfigPath;\n }\n Logger.log('[开始] 初始化配置文件: ' + path);\n await writeJson(path, this.options.defaultOptions, { spaces: 2 });\n Logger.log('[完毕] 初始化配置文件: ' + path);\n });\n this.addOptions();\n }\n private addOptions() {\n this.program?.option('-c --config <string>', '配置文件', ConfigCommand.defaultConfigPath);\n }\n private addAction(action: Action) {\n this.program!.action(async ({ config = '' }) => {\n let options = await loadConfig(config);\n\n if (!options) {\n throw new Error(`配置文件为空,请检查${config}`);\n }\n // 这里传入的是config\n action(options);\n });\n }\n start(action: Action) {\n this.addAction(action);\n if (!this.options.program) {\n this.program!.parse(process.argv);\n }\n }\n}\n","// 消息显示等\nimport { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n/**\n * echo info\n * @param info\n */\nexport function echo(info: Record<string, any>) {\n // logo\n if (info.logo) console.log(info.logo);\n // 名称\n Logger.log(`[欢迎使用] ${info.name}`);\n // 版本\n Logger.log('版本: ' + info.version);\n}\n","import { Command, createCommand } from 'commander';\nimport { AbstractCommand, Action } from './command.interface';\nimport { echo } from '../Info';\nexport class InfoCommand extends AbstractCommand {\n program: Command | undefined;\n\n init(): void {\n this.program = this.options.program || createCommand();\n }\n start(): void {\n this.program?.addCommand(\n createCommand('info')\n .description('show info')\n .action(() => {\n echo(this.options);\n }),\n );\n }\n}\n","import { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nimport { ConfigCommand } from './command/ConfigCommand';\nimport { Command, createCommand } from 'commander';\nimport { mergeOptions } from '@tikkhun/utils-core';\nimport { InfoCommand } from './command/InfoCommand';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n 'config' = 'config',\n info = 'info',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n immediatelyWelcome: boolean;\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_OPTIONS,\n name: '',\n types: [CommandTypes.args, CommandTypes.info],\n immediatelyWelcome: false,\n };\n logger: Logger;\n options: CommandManagerOptions;\n // argsCommand?: ArgsCommand;\n // promptsCommand?: PromptsCommand;\n // configCommand?: ConfigCommand;\n // infoCommand?: InfoCommand;\n commands: AbstractCommand[] = [];\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = mergeOptions(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n if (this.options.immediatelyWelcome) this.welcome(); // 有的时候并不想马上触发\n this.init();\n }\n welcome() {\n if (this.options.logo) console.log(this.options.logo);\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n program: Command | undefined;\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n // 特殊处理\n if (types.length === 1 && types[0] === CommandTypes.prompts) {\n return;\n }\n this.program = createCommand();\n const map = {\n [CommandTypes.args]: ArgsCommand,\n [CommandTypes.config]: ConfigCommand,\n [CommandTypes.prompts]: PromptsCommand,\n [CommandTypes.info]: InfoCommand,\n };\n types.forEach((type) => {\n this.commands.push(new map[type]({ ...options, program: this.program }));\n });\n }\n start(action?: Action) {\n if (!action) {\n action = this.options.action;\n }\n if (!action) {\n throw new Error('action is undefined');\n }\n this.commands.forEach((command) => {\n command.start(action);\n });\n // 当没有的时候就不会parse了\n this.program?.parse(process.argv);\n }\n}\n// alias\nexport const Cli = CommandManager;\n"]}
|