@tikkhun/cli-core 0.0.4 → 0.0.5
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/README.md +47 -2
- package/dist/CommandManager.d.mts +28 -0
- package/dist/CommandManager.d.ts +28 -0
- package/dist/CommandManager.js +22 -0
- package/dist/CommandManager.js.map +1 -0
- package/dist/CommandManager.mjs +14 -0
- package/dist/CommandManager.mjs.map +1 -0
- package/dist/OptionHandler.d.mts +2 -0
- package/dist/OptionHandler.d.ts +2 -0
- package/dist/OptionHandler.js +1 -1
- package/dist/OptionHandler.js.map +1 -1
- package/dist/OptionHandler.mjs +1 -1
- package/dist/OptionHandler.mjs.map +1 -1
- package/dist/command/ArgsCommand.d.mts +11 -0
- package/dist/command/ArgsCommand.d.ts +11 -0
- package/dist/command/ArgsCommand.js +18 -0
- package/dist/command/ArgsCommand.js.map +1 -0
- package/dist/command/ArgsCommand.mjs +12 -0
- package/dist/command/ArgsCommand.mjs.map +1 -0
- package/dist/command/PromptsCommand.d.mts +10 -0
- package/dist/command/PromptsCommand.d.ts +10 -0
- package/dist/command/PromptsCommand.js +18 -0
- package/dist/command/PromptsCommand.js.map +1 -0
- package/dist/command/PromptsCommand.mjs +12 -0
- package/dist/command/PromptsCommand.mjs.map +1 -0
- package/dist/command/command.interface.d.mts +20 -0
- package/dist/command/command.interface.d.ts +20 -0
- package/dist/command/command.interface.js +16 -0
- package/dist/command/command.interface.js.map +1 -0
- package/dist/command/command.interface.mjs +10 -0
- package/dist/command/command.interface.mjs.map +1 -0
- package/dist/command/index.d.mts +4 -0
- package/dist/command/index.d.ts +4 -0
- package/dist/command/index.js +21 -0
- package/dist/command/index.js.map +1 -0
- package/dist/command/index.mjs +13 -0
- package/dist/command/index.mjs.map +1 -0
- package/dist/index.d.mts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +16 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -3
- package/dist/index.mjs.map +1 -1
- package/dist/package.d.mts +3 -0
- package/dist/package.d.ts +3 -0
- package/dist/package.js +12 -0
- package/dist/package.js.map +1 -0
- package/dist/package.mjs +10 -0
- package/dist/package.mjs.map +1 -0
- package/package.json +5 -3
- package/dist/Cli.d.mts +0 -28
- package/dist/Cli.d.ts +0 -28
- package/dist/Cli.js +0 -19
- package/dist/Cli.js.map +0 -1
- package/dist/Cli.mjs +0 -12
- package/dist/Cli.mjs.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
interface Action {
|
|
2
|
+
(options: any): void;
|
|
3
|
+
}
|
|
4
|
+
interface CommandOptions {
|
|
5
|
+
version: string;
|
|
6
|
+
description: string;
|
|
7
|
+
defaultOptions: Record<string, any>;
|
|
8
|
+
excludeOptions: string[];
|
|
9
|
+
optionTypes: Record<string, any>;
|
|
10
|
+
optionTitles: Record<string, any>;
|
|
11
|
+
}
|
|
12
|
+
declare abstract class AbstractCommand {
|
|
13
|
+
static DEFAULT_CLI_OPTIONS: CommandOptions;
|
|
14
|
+
options: CommandOptions;
|
|
15
|
+
constructor(options?: Partial<CommandOptions>);
|
|
16
|
+
abstract init(): void;
|
|
17
|
+
abstract start(action: (options: any) => any): void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { AbstractCommand, type Action, type CommandOptions };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
interface Action {
|
|
2
|
+
(options: any): void;
|
|
3
|
+
}
|
|
4
|
+
interface CommandOptions {
|
|
5
|
+
version: string;
|
|
6
|
+
description: string;
|
|
7
|
+
defaultOptions: Record<string, any>;
|
|
8
|
+
excludeOptions: string[];
|
|
9
|
+
optionTypes: Record<string, any>;
|
|
10
|
+
optionTitles: Record<string, any>;
|
|
11
|
+
}
|
|
12
|
+
declare abstract class AbstractCommand {
|
|
13
|
+
static DEFAULT_CLI_OPTIONS: CommandOptions;
|
|
14
|
+
options: CommandOptions;
|
|
15
|
+
constructor(options?: Partial<CommandOptions>);
|
|
16
|
+
abstract init(): void;
|
|
17
|
+
abstract start(action: (options: any) => any): void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { AbstractCommand, type Action, type CommandOptions };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var n = require('lodash');
|
|
4
|
+
|
|
5
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
|
|
7
|
+
var n__default = /*#__PURE__*/_interopDefault(n);
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
@tikkhun/cli-core
|
|
11
|
+
*/
|
|
12
|
+
var{merge:s}=n__default.default,t=class t{constructor(o){this.options=s(t.DEFAULT_CLI_OPTIONS,o),this.init();}};t.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var i=t;
|
|
13
|
+
|
|
14
|
+
exports.AbstractCommand = i;
|
|
15
|
+
//# sourceMappingURL=command.interface.js.map
|
|
16
|
+
//# sourceMappingURL=command.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand"],"mappings":";;;;;;;;;;;AACA,GAAM,CAAE,MAAAA,CAAM,CAAA,CAAIC,kBAaIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAWpC,WAAYC,CAAAA,CAAAA,CAAmC,CAC7C,IAAK,CAAA,OAAA,CAAUH,EAAME,CAAgB,CAAA,mBAAA,CAAqBC,CAAO,CAAA,CACjE,IAAK,CAAA,IAAA,GACP,CAGF,CAAA,CAjBsBD,EACb,mBAAsC,CAAA,CAC3C,QAAS,EACT,CAAA,WAAA,CAAa,EACb,CAAA,cAAA,CAAgB,EAAC,CACjB,eAAgB,EAAC,CACjB,YAAa,EAAC,CACd,aAAc,EAChB,CARK,CAAA,IAAeE,CAAfF,CAAAA","file":"command.interface.js","sourcesContent":["import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static DEFAULT_CLI_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge(AbstractCommand.DEFAULT_CLI_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import n from 'lodash';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
@tikkhun/cli-core
|
|
5
|
+
*/
|
|
6
|
+
var{merge:s}=n,t=class t{constructor(o){this.options=s(t.DEFAULT_CLI_OPTIONS,o),this.init();}};t.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var i=t;
|
|
7
|
+
|
|
8
|
+
export { i as AbstractCommand };
|
|
9
|
+
//# sourceMappingURL=command.interface.mjs.map
|
|
10
|
+
//# sourceMappingURL=command.interface.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/command/command.interface.ts"],"names":["merge","_","_AbstractCommand","options","AbstractCommand"],"mappings":";;;;;AACA,GAAM,CAAE,MAAAA,CAAM,CAAA,CAAIC,CAaIC,CAAAA,CAAAA,CAAf,MAAeA,CAAgB,CAWpC,WAAYC,CAAAA,CAAAA,CAAmC,CAC7C,IAAK,CAAA,OAAA,CAAUH,EAAME,CAAgB,CAAA,mBAAA,CAAqBC,CAAO,CAAA,CACjE,IAAK,CAAA,IAAA,GACP,CAGF,CAAA,CAjBsBD,EACb,mBAAsC,CAAA,CAC3C,QAAS,EACT,CAAA,WAAA,CAAa,EACb,CAAA,cAAA,CAAgB,EAAC,CACjB,eAAgB,EAAC,CACjB,YAAa,EAAC,CACd,aAAc,EAChB,CARK,CAAA,IAAeE,CAAfF,CAAAA","file":"command.interface.mjs","sourcesContent":["import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static DEFAULT_CLI_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge(AbstractCommand.DEFAULT_CLI_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utilsCore = require('@tikkhun/utils-core');
|
|
4
|
+
var h = require('lodash');
|
|
5
|
+
var commander = require('commander');
|
|
6
|
+
var prompts = require('@inquirer/prompts');
|
|
7
|
+
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
var h__default = /*#__PURE__*/_interopDefault(h);
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
@tikkhun/cli-core
|
|
14
|
+
*/
|
|
15
|
+
var m=(e,t,o)=>new Promise((n,i)=>{var r=s=>{try{c(o.next(s));}catch(l){i(l);}},a=s=>{try{c(o.throw(s));}catch(l){i(l);}},c=s=>s.done?n(s.value):Promise.resolve(s.value).then(r,a);c((o=o.apply(e,t)).next());});var f={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},O=["true",!0,"1",1];var p=class e{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===f.array?t.split(","):o===f.object?JSON.parse(t):o===f.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[i,r]=n.split("=");return {key:i,value:r}}).filter(n=>n):[]:o===f.number?Number(t):o===f.boolean?!!O.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([i,r])=>{let a=o[i];typeof r=="object"?n[i]=e.toType(r,a):n[i]=e.getTypeValue(r,a);}),n}toType(t){return e.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=e.toStringValue(i);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?e.toString(t):""+t}};var{merge:b}=h__default.default,y=class y{constructor(t){this.options=b(y.DEFAULT_CLI_OPTIONS,t),this.init();}};y.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var d=y;var {get:E}=h__default.default,u=class extends d{init(){this.program=commander.createCommand(),this.addOptions();}addOptions(){let t=p.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:i,value:r})=>{if(this.options.excludeOptions.includes(i))return;let a=n[i];this.program.option(`--${i} <${a}>`,E(this.options.optionTitles,i),r);});}start(t){this.program.action(o=>{let n=utilsCore.unflatJson({delimiter:".",data:o}),i=p.toType(n,this.options.optionTypes);t(i);}).parse(process.argv);}};var T=class extends d{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),n=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>m(this,null,function*(){let i={};for(let{key:r,value:a}of t){let c=o[r];if(!c)continue;let s=n[r];s&&(i[r]=(yield this.getActionResult(c,s))||a);}return i});}getActionResult(t,o){return m(this,null,function*(){return yield prompts.input({message:o})})}start(t){return m(this,null,function*(){let o=yield this.program(),n=utilsCore.unflatJson({delimiter:".",data:o}),i=p.toType(n,this.options.optionTypes);t(i);})}};
|
|
16
|
+
|
|
17
|
+
exports.AbstractCommand = d;
|
|
18
|
+
exports.ArgsCommand = u;
|
|
19
|
+
exports.PromptsCommand = T;
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/command/ArgsCommand.ts","../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","title","message","input","unflattedOptions","typedResults"],"mappings":"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","file":"index.js","sourcesContent":["import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static DEFAULT_CLI_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge(AbstractCommand.DEFAULT_CLI_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult(type, title)) || value;\n }\n return result;\n };\n }\n private async getActionResult(type: TYPES, message: string) {\n return await input({ message });\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
|
|
2
|
+
import h from 'lodash';
|
|
3
|
+
import { createCommand } from 'commander';
|
|
4
|
+
import { input } from '@inquirer/prompts';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
@tikkhun/cli-core
|
|
8
|
+
*/
|
|
9
|
+
var m=(e,t,o)=>new Promise((n,i)=>{var r=s=>{try{c(o.next(s));}catch(l){i(l);}},a=s=>{try{c(o.throw(s));}catch(l){i(l);}},c=s=>s.done?n(s.value):Promise.resolve(s.value).then(r,a);c((o=o.apply(e,t)).next());});var f={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},O=["true",!0,"1",1];var p=class e{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===f.array?t.split(","):o===f.object?JSON.parse(t):o===f.keyValueArray?t?t.split(",").map(n=>{if(!n)return;let[i,r]=n.split("=");return {key:i,value:r}}).filter(n=>n):[]:o===f.number?Number(t):o===f.boolean?!!O.includes(t):t}static toType(t,o){let n={};return Object.entries(t).forEach(([i,r])=>{let a=o[i];typeof r=="object"?n[i]=e.toType(r,a):n[i]=e.getTypeValue(r,a);}),n}toType(t){return e.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([n,i])=>{o[n]=e.toStringValue(i);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(n=>`${n.key}=${n.value}`).toString():t.toString()}return typeof t=="object"?e.toString(t):""+t}};var{merge:b}=h,y=class y{constructor(t){this.options=b(y.DEFAULT_CLI_OPTIONS,t),this.init();}};y.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var d=y;var {get:E}=h,u=class extends d{init(){this.program=createCommand(),this.addOptions();}addOptions(){let t=p.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),n=flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:i,value:r})=>{if(this.options.excludeOptions.includes(i))return;let a=n[i];this.program.option(`--${i} <${a}>`,E(this.options.optionTitles,i),r);});}start(t){this.program.action(o=>{let n=unflatJson({delimiter:".",data:o}),i=p.toType(n,this.options.optionTypes);t(i);}).parse(process.argv);}};var T=class extends d{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),o=flatJson({delimiter:".",data:this.options.optionTypes}),n=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>m(this,null,function*(){let i={};for(let{key:r,value:a}of t){let c=o[r];if(!c)continue;let s=n[r];s&&(i[r]=(yield this.getActionResult(c,s))||a);}return i});}getActionResult(t,o){return m(this,null,function*(){return yield input({message:o})})}start(t){return m(this,null,function*(){let o=yield this.program(),n=unflatJson({delimiter:".",data:o}),i=p.toType(n,this.options.optionTypes);t(i);})}};
|
|
10
|
+
|
|
11
|
+
export { d as AbstractCommand, u as ArgsCommand, T as PromptsCommand };
|
|
12
|
+
//# sourceMappingURL=index.mjs.map
|
|
13
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/command/ArgsCommand.ts","../../lib/OptionHandler.ts","../../lib/command/command.interface.ts","../../lib/command/PromptsCommand.ts"],"names":["TYPES","asTrueValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","title","message","input","unflattedOptions","typedResults"],"mappings":"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","file":"index.mjs","sourcesContent":["import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static DEFAULT_CLI_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge(AbstractCommand.DEFAULT_CLI_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult(type, title)) || value;\n }\n return result;\n };\n }\n private async getActionResult(type: TYPES, message: string) {\n return await input({ message });\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export { ArgsCommand } from './command/ArgsCommand.mjs';
|
|
2
|
+
export { PromptsCommand } from './command/PromptsCommand.mjs';
|
|
3
|
+
export { AbstractCommand, Action, CommandOptions } from './command/command.interface.mjs';
|
|
4
|
+
export { Cli, CommandManager, CommandManagerOptions, CommandTypes } from './CommandManager.mjs';
|
|
1
5
|
export { OptionHandler, TYPES, asFalseValues, asTrueValues } from './OptionHandler.mjs';
|
|
2
|
-
export {
|
|
6
|
+
export { echoPackage } from './package.mjs';
|
|
3
7
|
import 'commander';
|
|
8
|
+
import '@tikkhun/logger';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export { ArgsCommand } from './command/ArgsCommand.js';
|
|
2
|
+
export { PromptsCommand } from './command/PromptsCommand.js';
|
|
3
|
+
export { AbstractCommand, Action, CommandOptions } from './command/command.interface.js';
|
|
4
|
+
export { Cli, CommandManager, CommandManagerOptions, CommandTypes } from './CommandManager.js';
|
|
1
5
|
export { OptionHandler, TYPES, asFalseValues, asTrueValues } from './OptionHandler.js';
|
|
2
|
-
export {
|
|
6
|
+
export { echoPackage } from './package.js';
|
|
3
7
|
import 'commander';
|
|
8
|
+
import '@tikkhun/logger';
|
package/dist/index.js
CHANGED
|
@@ -1,23 +1,30 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var utilsCore = require('@tikkhun/utils-core');
|
|
4
|
+
var I = require('lodash');
|
|
4
5
|
var commander = require('commander');
|
|
5
|
-
var
|
|
6
|
+
var prompts = require('@inquirer/prompts');
|
|
7
|
+
var logger = require('@tikkhun/logger');
|
|
6
8
|
|
|
7
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
10
|
|
|
9
|
-
var
|
|
11
|
+
var I__default = /*#__PURE__*/_interopDefault(I);
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
@tikkhun/cli-core
|
|
13
15
|
*/
|
|
14
|
-
var e={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string"},
|
|
16
|
+
var L=Object.defineProperty,E=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var C=(n,t,o)=>t in n?L(n,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[t]=o,A=(n,t)=>{for(var o in t||(t={}))x.call(t,o)&&C(n,o,t[o]);if(g)for(var o of g(t))b.call(t,o)&&C(n,o,t[o]);return n},S=(n,t)=>E(n,w(t));var R=(n,t)=>{var o={};for(var r in n)x.call(n,r)&&t.indexOf(r)<0&&(o[r]=n[r]);if(n!=null&&g)for(var r of g(n))t.indexOf(r)<0&&b.call(n,r)&&(o[r]=n[r]);return o};var f=(n,t,o)=>new Promise((r,i)=>{var s=e=>{try{c(o.next(e));}catch(O){i(O);}},a=e=>{try{c(o.throw(e));}catch(O){i(O);}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,a);c((o=o.apply(n,t)).next());});var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},V=["true",!0,"1",1],z=["false",!1,"",0],m=class n{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(r=>{if(!r)return;let[i,s]=r.split("=");return {key:i,value:s}}).filter(r=>r):[]:o===d.number?Number(t):o===d.boolean?!!V.includes(t):t}static toType(t,o){let r={};return Object.entries(t).forEach(([i,s])=>{let a=o[i];typeof s=="object"?r[i]=n.toType(s,a):r[i]=n.getTypeValue(s,a);}),r}toType(t){return n.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([r,i])=>{o[r]=n.toStringValue(i);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(r=>`${r.key}=${r.value}`).toString():t.toString()}return typeof t=="object"?n.toString(t):""+t}};var{merge:N}=I__default.default,l=class l{constructor(t){this.options=N(l.DEFAULT_CLI_OPTIONS,t),this.init();}};l.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=l;var {get:J}=I__default.default,y=class extends p{init(){this.program=commander.createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:i,value:s})=>{if(this.options.excludeOptions.includes(i))return;let a=r[i];this.program.option(`--${i} <${a}>`,J(this.options.optionTitles,i),s);});}start(t){this.program.action(o=>{let r=utilsCore.unflatJson({delimiter:".",data:o}),i=m.toType(r,this.options.optionTypes);t(i);}).parse(process.argv);}};var u=class extends p{init(){let t=utilsCore.jsonToList({delimiter:".",json:this.options.defaultOptions}),o=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let i={};for(let{key:s,value:a}of t){let c=o[s];if(!c)continue;let e=r[s];e&&(i[s]=(yield this.getActionResult(c,e))||a);}return i});}getActionResult(t,o){return f(this,null,function*(){return yield prompts.input({message:o})})}start(t){return f(this,null,function*(){let o=yield this.program(),r=utilsCore.unflatJson({delimiter:".",data:o}),i=m.toType(r,this.options.optionTypes);t(i);})}};var H=(o=>(o.prompts="prompts",o.args="args",o))(H||{}),h=class h{constructor(t){this.options=I.merge(h.DEFAULT_OPTIONS,t),this.logger=new logger.Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let r=this.options,{types:t}=r,o=R(r,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new y(o)),t.includes("prompts")&&(this.promptsCommand=new u(o));}start(t){var o;this.argsCommand?(this.argsCommand.program.command("question").action(()=>{var r;(r=this.promptsCommand)==null||r.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};h.DEFAULT_OPTIONS=S(A({},p.DEFAULT_CLI_OPTIONS),{types:["args"],name:""});var T=h,St=T;function Lt(n){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${n.name}`),logger.Logger.log("\u7248\u672C: "+n.version);}
|
|
15
17
|
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
18
|
+
exports.AbstractCommand = p;
|
|
19
|
+
exports.ArgsCommand = y;
|
|
20
|
+
exports.Cli = St;
|
|
21
|
+
exports.CommandManager = T;
|
|
22
|
+
exports.CommandTypes = H;
|
|
23
|
+
exports.OptionHandler = m;
|
|
24
|
+
exports.PromptsCommand = u;
|
|
25
|
+
exports.TYPES = d;
|
|
26
|
+
exports.asFalseValues = z;
|
|
27
|
+
exports.asTrueValues = V;
|
|
28
|
+
exports.echoPackage = Lt;
|
|
22
29
|
//# sourceMappingURL=index.js.map
|
|
23
30
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/OptionHandler.ts","../lib/Cli.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","get","_","DEFAULT_CLI_OPTIONS","Cli","options","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions"],"mappings":"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","file":"index.js","sourcesContent":["import { Command } from \"commander\";\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n} as const;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n\n}\n","/**\n * @author\n * @file Cli.ts\n * @fileBase Cli\n * @path packages\\cli-core\\lib\\Cli.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nimport { OptionHandler } from './OptionHandler';\nconst { get } = _;\nexport interface CliOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\nexport const DEFAULT_CLI_OPTIONS = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n};\n\nexport class Cli {\n options: CliOptions;\n program: Command;\n constructor(options?: Partial<CliOptions>) {\n this.options = Object.assign(DEFAULT_CLI_OPTIONS, options);\n this.program = createCommand();\n this.init();\n }\n private addOptionToCommand() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n init() {\n this.program.version(this.options.version);\n this.program.description(this.options.description);\n this.addOptionToCommand();\n }\n start(action: (options: any) => any) {\n this.program\n .action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n })\n .parse(process.argv);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../lib/OptionHandler.ts","../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts","../lib/package.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","title","message","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","_a","types","__objRest","__spreadProps","__spreadValues","CommandManager","Cli","echoPackage","packageJson"],"mappings":"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","file":"index.js","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static DEFAULT_CLI_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge(AbstractCommand.DEFAULT_CLI_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult(type, title)) || value;\n }\n return result;\n };\n }\n private async getActionResult(type: TYPES, message: string) {\n return await input({ message });\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_CLI_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n","import { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { jsonToList, flatJson, unflatJson } from '@tikkhun/utils-core';
|
|
2
|
+
import I, { merge } from 'lodash';
|
|
2
3
|
import { createCommand } from 'commander';
|
|
3
|
-
import
|
|
4
|
+
import { input } from '@inquirer/prompts';
|
|
5
|
+
import { Logger } from '@tikkhun/logger';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
@tikkhun/cli-core
|
|
7
9
|
*/
|
|
8
|
-
var e={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string"},
|
|
10
|
+
var L=Object.defineProperty,E=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var g=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var C=(n,t,o)=>t in n?L(n,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[t]=o,A=(n,t)=>{for(var o in t||(t={}))x.call(t,o)&&C(n,o,t[o]);if(g)for(var o of g(t))b.call(t,o)&&C(n,o,t[o]);return n},S=(n,t)=>E(n,w(t));var R=(n,t)=>{var o={};for(var r in n)x.call(n,r)&&t.indexOf(r)<0&&(o[r]=n[r]);if(n!=null&&g)for(var r of g(n))t.indexOf(r)<0&&b.call(n,r)&&(o[r]=n[r]);return o};var f=(n,t,o)=>new Promise((r,i)=>{var s=e=>{try{c(o.next(e));}catch(O){i(O);}},a=e=>{try{c(o.throw(e));}catch(O){i(O);}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,a);c((o=o.apply(n,t)).next());});var d={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string",select:"select"},V=["true",!0,"1",1],z=["false",!1,"",0],m=class n{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===d.array?t.split(","):o===d.object?JSON.parse(t):o===d.keyValueArray?t?t.split(",").map(r=>{if(!r)return;let[i,s]=r.split("=");return {key:i,value:s}}).filter(r=>r):[]:o===d.number?Number(t):o===d.boolean?!!V.includes(t):t}static toType(t,o){let r={};return Object.entries(t).forEach(([i,s])=>{let a=o[i];typeof s=="object"?r[i]=n.toType(s,a):r[i]=n.getTypeValue(s,a);}),r}toType(t){return n.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([r,i])=>{o[r]=n.toStringValue(i);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(r=>`${r.key}=${r.value}`).toString():t.toString()}return typeof t=="object"?n.toString(t):""+t}};var{merge:N}=I,l=class l{constructor(t){this.options=N(l.DEFAULT_CLI_OPTIONS,t),this.init();}};l.DEFAULT_CLI_OPTIONS={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}};var p=l;var {get:J}=I,y=class extends p{init(){this.program=createCommand(),this.addOptions();}addOptions(){let t=m.toString(this.options.defaultOptions),o=jsonToList({delimiter:".",json:t}),r=flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:i,value:s})=>{if(this.options.excludeOptions.includes(i))return;let a=r[i];this.program.option(`--${i} <${a}>`,J(this.options.optionTitles,i),s);});}start(t){this.program.action(o=>{let r=unflatJson({delimiter:".",data:o}),i=m.toType(r,this.options.optionTypes);t(i);}).parse(process.argv);}};var u=class extends p{init(){let t=jsonToList({delimiter:".",json:this.options.defaultOptions}),o=flatJson({delimiter:".",data:this.options.optionTypes}),r=flatJson({delimiter:".",data:this.options.optionTitles});this.program=()=>f(this,null,function*(){let i={};for(let{key:s,value:a}of t){let c=o[s];if(!c)continue;let e=r[s];e&&(i[s]=(yield this.getActionResult(c,e))||a);}return i});}getActionResult(t,o){return f(this,null,function*(){return yield input({message:o})})}start(t){return f(this,null,function*(){let o=yield this.program(),r=unflatJson({delimiter:".",data:o}),i=m.toType(r,this.options.optionTypes);t(i);})}};var H=(o=>(o.prompts="prompts",o.args="args",o))(H||{}),h=class h{constructor(t){this.options=merge(h.DEFAULT_OPTIONS,t),this.logger=new Logger(this.options.name),this.welcome(),this.init();}welcome(){this.logger.log("Welcome!"),this.logger.log("version: "+this.options.version),this.logger.log("description: "+this.options.description);}init(){let r=this.options,{types:t}=r,o=R(r,["types"]);if(!t||!t.length)throw new Error("types is undefined");t.includes("args")&&(this.argsCommand=new y(o)),t.includes("prompts")&&(this.promptsCommand=new u(o));}start(t){var o;this.argsCommand?(this.argsCommand.program.command("question").action(()=>{var r;(r=this.promptsCommand)==null||r.start(t);}),this.argsCommand.start(t)):(o=this.promptsCommand)==null||o.start(t);}};h.DEFAULT_OPTIONS=S(A({},p.DEFAULT_CLI_OPTIONS),{types:["args"],name:""});var T=h,St=T;function Lt(n){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${n.name}`),Logger.log("\u7248\u672C: "+n.version);}
|
|
9
11
|
|
|
10
|
-
export {
|
|
12
|
+
export { p as AbstractCommand, y as ArgsCommand, St as Cli, T as CommandManager, H as CommandTypes, m as OptionHandler, u as PromptsCommand, d as TYPES, z as asFalseValues, V as asTrueValues, Lt as echoPackage };
|
|
11
13
|
//# sourceMappingURL=index.mjs.map
|
|
12
14
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/OptionHandler.ts","../lib/Cli.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","get","_","DEFAULT_CLI_OPTIONS","Cli","options","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Command } from \"commander\";\n\nexport const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n} as const;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n\n}\n","/**\n * @author\n * @file Cli.ts\n * @fileBase Cli\n * @path packages\\cli-core\\lib\\Cli.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nimport { OptionHandler } from './OptionHandler';\nconst { get } = _;\nexport interface CliOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\nexport const DEFAULT_CLI_OPTIONS = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n};\n\nexport class Cli {\n options: CliOptions;\n program: Command;\n constructor(options?: Partial<CliOptions>) {\n this.options = Object.assign(DEFAULT_CLI_OPTIONS, options);\n this.program = createCommand();\n this.init();\n }\n private addOptionToCommand() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n init() {\n this.program.version(this.options.version);\n this.program.description(this.options.description);\n this.addOptionToCommand();\n }\n start(action: (options: any) => any) {\n this.program\n .action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n })\n .parse(process.argv);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../lib/OptionHandler.ts","../lib/command/command.interface.ts","../lib/command/ArgsCommand.ts","../lib/command/PromptsCommand.ts","../lib/CommandManager.ts","../lib/package.ts"],"names":["TYPES","asTrueValues","asFalseValues","OptionHandler","_OptionHandler","schema","value","type","strItem","key","i","obj","_obj","item1","item","merge","_","_AbstractCommand","options","AbstractCommand","get","ArgsCommand","createCommand","stringOptions","optionList","jsonToList","optionTypeMap","flatJson","action","jsonOptions","unflatJson","typedOptions","PromptsCommand","defaultOptionList","flattedOptionType","flattedOptionTitle","__async","result","title","message","input","unflattedOptions","typedResults","CommandTypes","_CommandManager","Logger","_a","types","__objRest","__spreadProps","__spreadValues","CommandManager","Cli","echoPackage","packageJson"],"mappings":";;;;;;;;;qyBAAaA,CAAQ,CAAA,CACnB,MAAO,OACP,CAAA,aAAA,CAAe,gBACf,OAAS,CAAA,SAAA,CACT,OAAQ,QACR,CAAA,MAAA,CAAQ,QACR,CAAA,MAAA,CAAQ,QACR,CAAA,MAAA,CAAQ,QACV,CAEaC,CAAAA,CAAAA,CAAe,CAAC,MAAQ,CAAA,CAAA,CAAA,CAAM,IAAK,CAAC,CAAA,CACpCC,EAAgB,CAAC,OAAA,CAAS,GAAO,EAAI,CAAA,CAAC,EACtCC,CAAN,CAAA,MAAMC,CAAc,CAEzB,WAAA,CAAYC,CAA6B,CAAA,CACvC,IAAK,CAAA,MAAA,CAASA,EAChB,CACA,OAAO,aAAaC,CAAeC,CAAAA,CAAAA,CAAc,CAC/C,OAAIA,CAAAA,GAASP,EAAM,KACVM,CAAAA,CAAAA,CAAM,MAAM,GAAG,CAAA,CAEpBC,IAASP,CAAM,CAAA,MAAA,CACV,KAAK,KAAMM,CAAAA,CAAK,CAErBC,CAAAA,CAAAA,GAASP,CAAM,CAAA,aAAA,CACZM,EACEA,CACJ,CAAA,KAAA,CAAM,GAAG,CACT,CAAA,GAAA,CAAKE,GAAY,CAChB,GAAI,CAACA,CAAAA,CAAS,OACd,GAAM,CAACC,CAAKH,CAAAA,CAAK,EAAIE,CAAQ,CAAA,KAAA,CAAM,GAAG,CACtC,CAAA,OAAO,CAAE,GAAA,CAAAC,CAAK,CAAA,KAAA,CAAAH,CAAM,CACtB,CAAC,EACA,MAAQI,CAAAA,CAAAA,EAAMA,CAAC,CARC,CAAA,GAUjBH,CAASP,GAAAA,CAAAA,CAAM,OACV,MAAOM,CAAAA,CAAK,EAEjBC,CAASP,GAAAA,CAAAA,CAAM,QACb,CAAAC,CAAAA,CAAAA,CAAa,QAASK,CAAAA,CAAK,CAG1BA,CAAAA,CACT,CACA,OAAO,MAAA,CAAOK,EAAsDN,CAA6B,CAAA,CAC/F,IAAMO,CAA4B,CAAA,GAClC,OAAO,MAAA,CAAA,OAAA,CAAQD,CAAG,CAAE,CAAA,OAAA,CAAQ,CAAC,CAACF,CAAAA,CAAKH,CAAK,CAAM,GAAA,CAC5C,IAAMC,CAAAA,CAAOF,CAAOI,CAAAA,CAAG,EACnB,OAAOH,CAAAA,EAAU,SACnBM,CAAKH,CAAAA,CAAG,EAAIL,CAAc,CAAA,MAAA,CAAOE,EAAOC,CAAI,CAAA,CAE5CK,EAAKH,CAAG,CAAA,CAAIL,EAAc,YAAaE,CAAAA,CAAAA,CAAiBC,CAAI,EAEhE,CAAC,CACMK,CAAAA,CACT,CACA,MAAA,CAAOD,EAA0B,CAC/B,OAAOP,EAAc,MAAOO,CAAAA,CAAAA,CAAK,KAAK,MAAM,CAC9C,CACA,OAAO,QAASA,CAAAA,CAAAA,CAA0B,CACxC,IAAMC,CAAAA,CAA4B,EAClC,CAAA,OAAA,MAAA,CAAO,QAAQD,CAAG,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACF,CAAAA,CAAKH,CAAK,CAAM,GAAA,CAC5CM,EAAKH,CAAG,CAAA,CAAIL,EAAc,aAAcE,CAAAA,CAAK,EAC/C,CAAC,CAAA,CACMM,CACT,CACA,OAAO,cAAcN,CAAY,CAAA,CAC/B,GAAI,KAAM,CAAA,OAAA,CAAQA,CAAK,CAAA,CAAG,CACxB,IAAMO,EAAQP,CAAM,CAAA,CAAC,EAErB,OAAI,OAAOO,GAAU,QAAYA,EAAAA,CAAAA,CAAM,eAAe,KAAK,CAAA,EAAKA,EAAM,cAAe,CAAA,OAAO,EACnFP,CAAM,CAAA,GAAA,CAAKQ,GAAS,CAAGA,EAAAA,CAAAA,CAAK,GAAG,CAAA,CAAA,EAAIA,CAAK,CAAA,KAAK,EAAE,CAAE,CAAA,QAAA,GAEnDR,CAAM,CAAA,QAAA,EACf,CACA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACZF,EAAc,QAASE,CAAAA,CAAK,EAE9B,EAAKA,CAAAA,CACd,CACF,EC/EA,GAAM,CAAE,MAAAS,CAAM,CAAA,CAAIC,EAaIC,CAAf,CAAA,MAAeA,CAAgB,CAWpC,WAAA,CAAYC,CAAmC,CAAA,CAC7C,IAAK,CAAA,OAAA,CAAUH,EAAME,CAAgB,CAAA,mBAAA,CAAqBC,CAAO,CACjE,CAAA,IAAA,CAAK,OACP,CAGF,CAjBsBD,CAAAA,CAAAA,CACb,mBAAsC,CAAA,CAC3C,QAAS,EACT,CAAA,WAAA,CAAa,GACb,cAAgB,CAAA,GAChB,cAAgB,CAAA,GAChB,WAAa,CAAA,GACb,YAAc,CAAA,EAChB,CARK,CAAA,IAAeE,EAAfF,ECTP,IAAM,CAAE,GAAAG,CAAAA,CAAI,EAAIJ,CACHK,CAAAA,CAAAA,CAAN,cAA0BF,CAAgB,CAE/C,MAAa,CACX,IAAA,CAAK,QAAUG,aAAc,EAAA,CAC7B,KAAK,UAAW,GAClB,CACQ,UAAA,EAAa,CACnB,IAAMC,EAAgBpB,CAAc,CAAA,QAAA,CAAS,KAAK,OAAQ,CAAA,cAAc,EAClEqB,CAAaC,CAAAA,UAAAA,CAAW,CAAE,SAAW,CAAA,GAAA,CAAK,KAAMF,CAAc,CAAC,EAC/DG,CAAgBC,CAAAA,QAAAA,CAAS,CAAE,SAAW,CAAA,GAAA,CAAK,IAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,WAAY,CAAC,CACjFH,CAAAA,CAAAA,CAAW,QAAQ,CAAC,CAAE,IAAAf,CAAK,CAAA,KAAA,CAAAH,CAAM,CAAA,GAAM,CACrC,GAAI,KAAK,OAAQ,CAAA,cAAA,CAAe,SAASG,CAAG,CAAA,CAC1C,OAEF,IAAMF,CAAAA,CAAOmB,CAAcjB,CAAAA,CAAG,CAC9B,CAAA,IAAA,CAAK,QAAS,MAAO,CAAA,CAAA,EAAA,EAAKA,CAAG,CAAKF,EAAAA,EAAAA,CAAI,IAAKa,CAAI,CAAA,IAAA,CAAK,QAAQ,YAAcX,CAAAA,CAAG,EAAGH,CAAK,EACvF,CAAC,EACH,CACA,MAAMsB,CAAgB,CAAA,CACpB,IAAK,CAAA,OAAA,CAAS,MAAQL,CAAAA,CAAAA,EAAkB,CACtC,IAAMM,CAAAA,CAAcC,WAAW,CAC7B,SAAA,CAAW,IACX,IAAMP,CAAAA,CACR,CAAC,CACKQ,CAAAA,CAAAA,CAAe5B,EAAc,MAAO0B,CAAAA,CAAAA,CAAa,KAAK,OAAQ,CAAA,WAAW,EAC/ED,CAAOG,CAAAA,CAAY,EACrB,CAAC,CAAE,CAAA,KAAA,CAAM,QAAQ,IAAI,EACvB,CACF,ECVO,IAAMC,EAAN,cAA6Bb,CAAgB,CAElD,IAAA,EAAO,CACL,IAAMc,EAAoBR,UAAW,CAAA,CAAE,UAAW,GAAK,CAAA,IAAA,CAAM,KAAK,OAAQ,CAAA,cAAe,CAAC,CAAA,CACpFS,CAAoBP,CAAAA,QAAAA,CAAS,CACjC,SAAW,CAAA,GAAA,CACX,KAAM,IAAK,CAAA,OAAA,CAAQ,WACrB,CAAC,CAAA,CACKQ,CAAqBR,CAAAA,QAAAA,CAAS,CAClC,SAAA,CAAW,IACX,IAAM,CAAA,IAAA,CAAK,QAAQ,YACrB,CAAC,EACD,IAAK,CAAA,OAAA,CAAU,IAAYS,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACzB,IAAMC,CAA8B,CAAA,GACpC,IAAW,GAAA,CAAE,IAAA5B,CAAK,CAAA,KAAA,CAAAH,CAAM,CAAA,GAAK2B,CAAmB,CAAA,CAC9C,IAAM1B,CAAO2B,CAAAA,CAAAA,CAAkBzB,CAAG,CAClC,CAAA,GAAI,CAACF,CACH,CAAA,SAEF,IAAM+B,CAAQH,CAAAA,CAAAA,CAAmB1B,CAAG,CAC/B6B,CAAAA,CAAAA,GAGLD,EAAO5B,CAAG,CAAA,CAAA,CAAK,MAAM,IAAK,CAAA,eAAA,CAAgBF,CAAM+B,CAAAA,CAAK,CAAMhC,GAAAA,CAAAA,EAC7D,CACA,OAAO+B,CACT,GACF,CACc,eAAA,CAAgB9B,EAAagC,CAAiB,CAAA,CAAA,OAAAH,EAAA,IAC1D,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MAAMI,KAAM,CAAA,CAAE,QAAAD,CAAQ,CAAC,CAChC,CACM,CAAA,CAAA,KAAA,CAAMX,CAAgB,CAAA,CAAA,OAAAQ,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC1B,IAAMlB,CAAU,CAAA,MAAM,KAAK,OAAQ,EAAA,CAC7BuB,EAAmBX,UAAW,CAAA,CAAE,SAAW,CAAA,GAAA,CAAK,IAAMZ,CAAAA,CAAQ,CAAC,CAC/DwB,CAAAA,CAAAA,CAAevC,EAAc,MAAOsC,CAAAA,CAAAA,CAAkB,KAAK,OAAQ,CAAA,WAAW,CACpFb,CAAAA,CAAAA,CAAOc,CAAY,EACrB,GACF,ECxDYC,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GACVA,EAAA,OAAY,CAAA,SAAA,CACZA,EAAA,IAAS,CAAA,MAAA,CAFCA,OAAA,EAQCC,CAAAA,CAAAA,CAAAA,CAAN,MAAMA,CAAe,CAU1B,WAAA,CAAY1B,EAAyC,CACnD,IAAA,CAAK,QAAUH,KAAM6B,CAAAA,CAAAA,CAAe,gBAAiB1B,CAAO,CAAA,CAC5D,KAAK,MAAS,CAAA,IAAI2B,OAAO,IAAK,CAAA,OAAA,CAAQ,IAAI,CAC1C,CAAA,IAAA,CAAK,SACL,CAAA,IAAA,CAAK,IAAK,GACZ,CACA,OAAA,EAAU,CACR,IAAK,CAAA,MAAA,CAAO,IAAI,UAAU,CAAA,CAC1B,KAAK,MAAO,CAAA,GAAA,CAAI,YAAc,IAAK,CAAA,OAAA,CAAQ,OAAO,CAClD,CAAA,IAAA,CAAK,OAAO,GAAI,CAAA,eAAA,CAAkB,KAAK,OAAQ,CAAA,WAAW,EAC5D,CACA,IAAO,EAAA,CACL,IAA8BC,CAAA,CAAA,IAAA,CAAK,QAA3B,CAAAC,KAAAA,CAAAA,CAnCZ,EAmCkCD,CAAZ5B,CAAAA,CAAAA,CAAA8B,CAAYF,CAAAA,CAAAA,CAAZ,CAAV,OAAA,CAAA,CAAA,CACR,GAAI,CAACC,CAAAA,EAAS,CAACA,CAAM,CAAA,MAAA,CACnB,MAAM,IAAI,KAAA,CAAM,oBAAoB,CAAA,CAElCA,CAAM,CAAA,QAAA,CAAS,MAAiB,CAClC,GAAA,IAAA,CAAK,YAAc,IAAI1B,CAAAA,CAAYH,CAAO,CAExC6B,CAAAA,CAAAA,CAAAA,CAAM,SAAS,SAAoB,CAAA,GACrC,KAAK,cAAiB,CAAA,IAAIf,EAAed,CAAO,CAAA,EAEpD,CACA,KAAMU,CAAAA,CAAAA,CAAgB,CA9CxB,IAAAkB,CA+CQ,CAAA,IAAA,CAAK,aACP,IAAK,CAAA,WAAA,CAAY,QAAS,OAAQ,CAAA,UAAU,EAAE,MAAO,CAAA,IAAM,CAhDjE,IAAAA,CAiDQA,CAAAA,CAAAA,CAAAA,CAAA,KAAK,cAAL,GAAA,IAAA,EAAAA,EAAqB,KAAMlB,CAAAA,CAAAA,EAC7B,CAAC,CACD,CAAA,IAAA,CAAK,WAAY,CAAA,KAAA,CAAMA,CAAM,CAAA,EAAA,CAE7BkB,EAAA,IAAK,CAAA,cAAA,GAAL,MAAAA,CAAqB,CAAA,KAAA,CAAMlB,GAE/B,CACF,EA3CagB,EACK,eAAyCK,CAAAA,CAAAA,CAAAC,EAAA,EACpD/B,CAAAA,CAAAA,CAAgB,qBADoC,CAEvD,KAAA,CAAO,CAAC,MAAiB,CAAA,CACzB,IAAM,CAAA,EACR,CALK,CAAA,CAAA,IAAMgC,EAANP,CA6CMQ,CAAAA,EAAAA,CAAMD,ECxDZ,SAASE,EAAYC,CAAAA,CAAAA,CAAkC,CAC5DT,MAAAA,CAAO,IAAI,CAAUS,2BAAAA,EAAAA,CAAAA,CAAY,IAAI,CAAE,CAAA,CAAA,CACvCT,OAAO,GAAI,CAAA,gBAAA,CAASS,CAAY,CAAA,OAAO,EACzC","file":"index.mjs","sourcesContent":["export const TYPES = {\n array: 'array',\n keyValueArray: 'keyValueArray',\n boolean: 'boolean',\n number: 'number',\n object: 'object',\n string: 'string',\n select: 'select', // 几个中进行选择 选择一项\n} as const;\nexport type TYPES = keyof typeof TYPES;\nexport const asTrueValues = ['true', true, '1', 1];\nexport const asFalseValues = ['false', false, '', 0];\nexport class OptionHandler {\n schema: Record<string, any>;\n constructor(schema: Record<string, any>) {\n this.schema = schema;\n }\n static getTypeValue(value: string, type: string) {\n if (type === TYPES.array) {\n return value.split(',');\n }\n if (type === TYPES.object) {\n return JSON.parse(value);\n }\n if (type === TYPES.keyValueArray) {\n if (!value) return [];\n return value\n .split(',')\n .map((strItem) => {\n if (!strItem) return undefined;\n const [key, value] = strItem.split('=');\n return { key, value };\n })\n .filter((i) => i);\n }\n if (type === TYPES.number) {\n return Number(value);\n }\n if (type === TYPES.boolean) {\n if (asTrueValues.includes(value)) return true;\n return false;\n }\n return value;\n }\n static toType(obj: Record<string, string | Record<string, string>>, schema: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n const type = schema[key];\n if (typeof value === 'object') {\n _obj[key] = OptionHandler.toType(value, type);\n } else {\n _obj[key] = OptionHandler.getTypeValue(value as string, type);\n }\n });\n return _obj;\n }\n toType(obj: Record<string, any>) {\n return OptionHandler.toType(obj, this.schema);\n }\n static toString(obj: Record<string, any>) {\n const _obj: Record<string, any> = {};\n Object.entries(obj).forEach(([key, value]) => {\n _obj[key] = OptionHandler.toStringValue(value);\n });\n return _obj;\n }\n static toStringValue(value: any) {\n if (Array.isArray(value)) {\n const item1 = value[0];\n // 有点魔法 key value 的值让他们用=表示\n if (typeof item1 === 'object' && item1.hasOwnProperty('key') && item1.hasOwnProperty('value')) {\n return value.map((item) => `${item.key}=${item.value}`).toString();\n }\n return value.toString();\n }\n if (typeof value === 'object') {\n return OptionHandler.toString(value);\n }\n return '' + value;\n }\n}\n","import _ from 'lodash';\nconst { merge } = _;\nexport interface Action {\n (options: any): void;\n}\nexport interface CommandOptions {\n version: string;\n description: string;\n defaultOptions: Record<string, any>;\n excludeOptions: string[];\n optionTypes: Record<string, any>;\n optionTitles: Record<string, any>;\n}\n\nexport abstract class AbstractCommand {\n static DEFAULT_CLI_OPTIONS: CommandOptions = {\n version: '',\n description: '',\n defaultOptions: {},\n excludeOptions: [],\n optionTypes: {},\n optionTitles: {},\n };\n\n options: CommandOptions;\n constructor(options?: Partial<CommandOptions>) {\n this.options = merge(AbstractCommand.DEFAULT_CLI_OPTIONS, options);\n this.init();\n }\n abstract init(): void;\n abstract start(action: (options: any) => any): void;\n}\n","import { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\nimport { Command, createCommand } from 'commander';\nimport _ from 'lodash';\nconst { get } = _;\nexport class ArgsCommand extends AbstractCommand {\n program: Command | undefined;\n init(): void {\n this.program = createCommand();\n this.addOptions();\n }\n private addOptions() {\n const stringOptions = OptionHandler.toString(this.options.defaultOptions);\n const optionList = jsonToList({ delimiter: '.', json: stringOptions });\n const optionTypeMap = flatJson({ delimiter: '.', data: this.options.optionTypes });\n optionList.forEach(({ key, value }) => {\n if (this.options.excludeOptions.includes(key)) {\n return;\n }\n const type = optionTypeMap[key];\n this.program!.option(`--${key} <${type}>`, get(this.options.optionTitles, key), value);\n });\n }\n start(action: Action) {\n this.program!.action((stringOptions) => {\n const jsonOptions = unflatJson({\n delimiter: '.',\n data: stringOptions,\n });\n const typedOptions = OptionHandler.toType(jsonOptions, this.options.optionTypes);\n action(typedOptions);\n }).parse(process.argv);\n }\n}\n","/**\n * @author\n * @file PromptsCommand.ts\n * @fileBase PromptsCommand\n * @path packages\\cli-core\\lib\\cli\\PromptsCommand.ts\n * @from\n * @desc\n * @todo\n *\n *\n * @done\n * @example\n */\nimport { input } from '@inquirer/prompts';\nimport { flatJson, jsonToList, unflatJson } from '@tikkhun/utils-core';\nimport { OptionHandler, TYPES } from '../OptionHandler';\nimport { AbstractCommand, Action } from './command.interface';\n// const actionMap = {\n// [TYPES.array]: input,\n// [TYPES.keyValueArray]: input,\n// [TYPES.number]: number,\n// [TYPES.string]: input,\n// [TYPES.select]: select,\n// };\nexport class PromptsCommand extends AbstractCommand {\n program: any;\n init() {\n const defaultOptionList = jsonToList({ delimiter: '.', json: this.options.defaultOptions });\n const flattedOptionType = flatJson({\n delimiter: '.',\n data: this.options.optionTypes,\n });\n const flattedOptionTitle = flatJson({\n delimiter: '.',\n data: this.options.optionTitles,\n });\n this.program = async () => {\n const result: Record<string, any> = {};\n for (const { key, value } of defaultOptionList) {\n const type = flattedOptionType[key];\n if (!type) {\n continue;\n }\n const title = flattedOptionTitle[key];\n if (!title) {\n continue;\n }\n result[key] = (await this.getActionResult(type, title)) || value;\n }\n return result;\n };\n }\n private async getActionResult(type: TYPES, message: string) {\n return await input({ message });\n }\n async start(action: Action) {\n const options = await this.program();\n const unflattedOptions = unflatJson({ delimiter: '.', data: options });\n const typedResults = OptionHandler.toType(unflattedOptions, this.options.optionTypes);\n action(typedResults);\n }\n}\n","import { merge } from 'lodash';\nimport { AbstractCommand, Action, CommandOptions } from './command/command.interface';\nimport { ArgsCommand } from './command/ArgsCommand';\nimport { PromptsCommand } from './command/PromptsCommand';\nimport { Logger } from '@tikkhun/logger';\nexport enum CommandTypes {\n 'prompts' = 'prompts',\n 'args' = 'args',\n}\nexport interface CommandManagerOptions extends CommandOptions {\n name: string;\n types: CommandTypes[];\n}\nexport class CommandManager {\n static readonly DEFAULT_OPTIONS: CommandManagerOptions = {\n ...AbstractCommand.DEFAULT_CLI_OPTIONS,\n types: [CommandTypes.args],\n name: '',\n };\n logger: Logger;\n options: CommandManagerOptions;\n argsCommand?: ArgsCommand;\n promptsCommand?: PromptsCommand;\n constructor(options: Partial<CommandManagerOptions>) {\n this.options = merge(CommandManager.DEFAULT_OPTIONS, options);\n this.logger = new Logger(this.options.name);\n this.welcome();\n this.init();\n }\n welcome() {\n this.logger.log('Welcome!');\n this.logger.log('version: ' + this.options.version);\n this.logger.log('description: ' + this.options.description);\n }\n init() {\n const { types, ...options } = this.options;\n if (!types || !types.length) {\n throw new Error('types is undefined');\n }\n if (types.includes(CommandTypes.args)) {\n this.argsCommand = new ArgsCommand(options);\n }\n if (types.includes(CommandTypes.prompts)) {\n this.promptsCommand = new PromptsCommand(options);\n }\n }\n start(action: Action) {\n if (this.argsCommand) {\n this.argsCommand.program!.command('question').action(() => {\n this.promptsCommand?.start(action);\n });\n this.argsCommand.start(action);\n } else {\n this.promptsCommand?.start(action);\n }\n }\n}\n// alias\nexport const Cli = CommandManager;\n","import { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n"]}
|
package/dist/package.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var logger = require('@tikkhun/logger');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
@tikkhun/cli-core
|
|
7
|
+
*/
|
|
8
|
+
function g(o){logger.Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${o.name}`),logger.Logger.log("\u7248\u672C: "+o.version);}
|
|
9
|
+
|
|
10
|
+
exports.echoPackage = g;
|
|
11
|
+
//# sourceMappingURL=package.js.map
|
|
12
|
+
//# sourceMappingURL=package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../lib/package.ts"],"names":["echoPackage","packageJson","Logger"],"mappings":";;;;;;;AAEO,SAASA,CAAYC,CAAAA,CAAAA,CAAkC,CAC5DC,aAAO,CAAA,GAAA,CAAI,8BAAUD,CAAY,CAAA,IAAI,EAAE,CACvCC,CAAAA,aAAAA,CAAO,IAAI,gBAASD,CAAAA,CAAAA,CAAY,OAAO,EACzC","file":"package.js","sourcesContent":["import { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n"]}
|
package/dist/package.mjs
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Logger } from '@tikkhun/logger';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
@tikkhun/cli-core
|
|
5
|
+
*/
|
|
6
|
+
function g(o){Logger.log(`[\u6B22\u8FCE\u4F7F\u7528] ${o.name}`),Logger.log("\u7248\u672C: "+o.version);}
|
|
7
|
+
|
|
8
|
+
export { g as echoPackage };
|
|
9
|
+
//# sourceMappingURL=package.mjs.map
|
|
10
|
+
//# sourceMappingURL=package.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../lib/package.ts"],"names":["echoPackage","packageJson","Logger"],"mappings":";;;;;AAEO,SAASA,CAAYC,CAAAA,CAAAA,CAAkC,CAC5DC,MAAO,CAAA,GAAA,CAAI,8BAAUD,CAAY,CAAA,IAAI,EAAE,CACvCC,CAAAA,MAAAA,CAAO,IAAI,gBAASD,CAAAA,CAAAA,CAAY,OAAO,EACzC","file":"package.mjs","sourcesContent":["import { Logger } from '@tikkhun/logger';\n\nexport function echoPackage(packageJson: Record<string, any>) {\n Logger.log(`[欢迎使用] ${packageJson.name}`);\n Logger.log('版本: ' + packageJson.version);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tikkhun/cli-core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -27,9 +27,11 @@
|
|
|
27
27
|
"author": "",
|
|
28
28
|
"license": "ISC",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@
|
|
30
|
+
"@inquirer/prompts": "^5.3.8",
|
|
31
31
|
"commander": "^12.1.0",
|
|
32
|
-
"lodash": "^4.17.21"
|
|
32
|
+
"lodash": "^4.17.21",
|
|
33
|
+
"@tikkhun/logger": "^1.0.8",
|
|
34
|
+
"@tikkhun/utils-core": "^0.0.5"
|
|
33
35
|
},
|
|
34
36
|
"devDependencies": {
|
|
35
37
|
"@types/lodash": "^4.17.7",
|
package/dist/Cli.d.mts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
|
|
3
|
-
interface CliOptions {
|
|
4
|
-
version: string;
|
|
5
|
-
description: string;
|
|
6
|
-
defaultOptions: Record<string, any>;
|
|
7
|
-
excludeOptions: string[];
|
|
8
|
-
optionTypes: Record<string, any>;
|
|
9
|
-
optionTitles: Record<string, any>;
|
|
10
|
-
}
|
|
11
|
-
declare const DEFAULT_CLI_OPTIONS: {
|
|
12
|
-
version: string;
|
|
13
|
-
description: string;
|
|
14
|
-
defaultOptions: {};
|
|
15
|
-
excludeOptions: never[];
|
|
16
|
-
optionTypes: {};
|
|
17
|
-
optionTitles: {};
|
|
18
|
-
};
|
|
19
|
-
declare class Cli {
|
|
20
|
-
options: CliOptions;
|
|
21
|
-
program: Command;
|
|
22
|
-
constructor(options?: Partial<CliOptions>);
|
|
23
|
-
private addOptionToCommand;
|
|
24
|
-
init(): void;
|
|
25
|
-
start(action: (options: any) => any): void;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export { Cli, type CliOptions, DEFAULT_CLI_OPTIONS };
|
package/dist/Cli.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
|
|
3
|
-
interface CliOptions {
|
|
4
|
-
version: string;
|
|
5
|
-
description: string;
|
|
6
|
-
defaultOptions: Record<string, any>;
|
|
7
|
-
excludeOptions: string[];
|
|
8
|
-
optionTypes: Record<string, any>;
|
|
9
|
-
optionTitles: Record<string, any>;
|
|
10
|
-
}
|
|
11
|
-
declare const DEFAULT_CLI_OPTIONS: {
|
|
12
|
-
version: string;
|
|
13
|
-
description: string;
|
|
14
|
-
defaultOptions: {};
|
|
15
|
-
excludeOptions: never[];
|
|
16
|
-
optionTypes: {};
|
|
17
|
-
optionTitles: {};
|
|
18
|
-
};
|
|
19
|
-
declare class Cli {
|
|
20
|
-
options: CliOptions;
|
|
21
|
-
program: Command;
|
|
22
|
-
constructor(options?: Partial<CliOptions>);
|
|
23
|
-
private addOptionToCommand;
|
|
24
|
-
init(): void;
|
|
25
|
-
start(action: (options: any) => any): void;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export { Cli, type CliOptions, DEFAULT_CLI_OPTIONS };
|
package/dist/Cli.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var utilsCore = require('@tikkhun/utils-core');
|
|
4
|
-
var commander = require('commander');
|
|
5
|
-
var f = require('lodash');
|
|
6
|
-
|
|
7
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
-
|
|
9
|
-
var f__default = /*#__PURE__*/_interopDefault(f);
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
@tikkhun/cli-core
|
|
13
|
-
*/
|
|
14
|
-
var e={array:"array",keyValueArray:"keyValueArray",boolean:"boolean",number:"number",object:"object",string:"string"},d=["true",!0,"1",1];var a=class s{constructor(t){this.schema=t;}static getTypeValue(t,o){return o===e.array?t.split(","):o===e.object?JSON.parse(t):o===e.keyValueArray?t?t.split(",").map(r=>{if(!r)return;let[n,i]=r.split("=");return {key:n,value:i}}).filter(r=>r):[]:o===e.number?Number(t):o===e.boolean?!!d.includes(t):t}static toType(t,o){let r={};return Object.entries(t).forEach(([n,i])=>{let p=o[n];typeof i=="object"?r[n]=s.toType(i,p):r[n]=s.getTypeValue(i,p);}),r}toType(t){return s.toType(t,this.schema)}static toString(t){let o={};return Object.entries(t).forEach(([r,n])=>{o[r]=s.toStringValue(n);}),o}static toStringValue(t){if(Array.isArray(t)){let o=t[0];return typeof o=="object"&&o.hasOwnProperty("key")&&o.hasOwnProperty("value")?t.map(r=>`${r.key}=${r.value}`).toString():t.toString()}return typeof t=="object"?s.toString(t):""+t}};var {get:l}=f__default.default,h={version:"",description:"",defaultOptions:{},excludeOptions:[],optionTypes:{},optionTitles:{}},c=class{constructor(t){this.options=Object.assign(h,t),this.program=commander.createCommand(),this.init();}addOptionToCommand(){let t=a.toString(this.options.defaultOptions),o=utilsCore.jsonToList({delimiter:".",json:t}),r=utilsCore.flatJson({delimiter:".",data:this.options.optionTypes});o.forEach(({key:n,value:i})=>{if(this.options.excludeOptions.includes(n))return;let p=r[n];this.program.option(`--${n} <${p}>`,l(this.options.optionTitles,n),i);});}init(){this.program.version(this.options.version),this.program.description(this.options.description),this.addOptionToCommand();}start(t){this.program.action(o=>{let r=utilsCore.unflatJson({delimiter:".",data:o}),n=a.toType(r,this.options.optionTypes);t(n);}).parse(process.argv);}};
|
|
15
|
-
|
|
16
|
-
exports.Cli = c;
|
|
17
|
-
exports.DEFAULT_CLI_OPTIONS = h;
|
|
18
|
-
//# sourceMappingURL=Cli.js.map
|
|
19
|
-
//# sourceMappingURL=Cli.js.map
|