erii 2.0.1 → 2.0.4

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.
@@ -0,0 +1,108 @@
1
+ export interface Command {
2
+ name: string | string[];
3
+ description?: string;
4
+ argument?: Argument;
5
+ alias?: string[];
6
+ redirect?: string;
7
+ options?: Option[];
8
+ handler?: (ctx: CommandCtx, options?: object) => any;
9
+ }
10
+ export interface Option {
11
+ name: string | string[];
12
+ description?: string;
13
+ command?: string;
14
+ argument?: Argument;
15
+ }
16
+ export interface CommandMap {
17
+ [key: string]: Command;
18
+ }
19
+ export interface CommandCtx {
20
+ showVersion: () => void;
21
+ showHelp: () => void;
22
+ getArgument: (commandName?: string) => string;
23
+ }
24
+ export interface Argument {
25
+ name: string;
26
+ description: string;
27
+ validate?: string | ((value: any, logger: (message: string) => void) => boolean);
28
+ }
29
+ export declare class Erii {
30
+ rawArguments: string[];
31
+ parsedArguments: {
32
+ _?: string[];
33
+ [key: string]: string | string[];
34
+ };
35
+ private version;
36
+ private name;
37
+ commands: CommandMap;
38
+ commonOptions: Option[];
39
+ validator: any;
40
+ alwaysHandler: () => void;
41
+ defaultHandler: () => void;
42
+ constructor();
43
+ /**
44
+ * 绑定命令处理函数
45
+ * @param config
46
+ * @param handler
47
+ */
48
+ bind(config: Command, handler: (ctx: CommandCtx, ...extraArguments: any[]) => any): void;
49
+ /**
50
+ * 总是执行
51
+ * @param handler
52
+ */
53
+ always(handler: () => any): void;
54
+ /**
55
+ *
56
+ */
57
+ default(handler: () => any): void;
58
+ /**
59
+ * 增加设置项
60
+ * @param config
61
+ */
62
+ addOption(config: Option): void;
63
+ /**
64
+ *
65
+ * @param command
66
+ */
67
+ private commandCtx;
68
+ /**
69
+ * 设定基础信息
70
+ * @param metaInfo
71
+ */
72
+ setMetaInfo({ version, name }?: {
73
+ version?: string;
74
+ name?: string;
75
+ }): void;
76
+ /**
77
+ * 显示帮助信息
78
+ */
79
+ showHelp(command?: string): void;
80
+ /**
81
+ * 显示版本号
82
+ */
83
+ showVersion(): void;
84
+ /**
85
+ * 启动
86
+ */
87
+ start(): void;
88
+ /**
89
+ * 执行命令担当函数
90
+ * @param command
91
+ * @param extraArguments
92
+ */
93
+ private exec;
94
+ validateArgument(argumentValue: any, argument: Argument): any;
95
+ /**
96
+ * 获得命令的参数
97
+ * @param commandName
98
+ * @param followRedirect 是否遵循重定向
99
+ */
100
+ getArgument(commandName: string, followRedirect?: boolean): string;
101
+ /**
102
+ * 启动
103
+ * エリイ 起きてます❤
104
+ */
105
+ okite(): void;
106
+ }
107
+ declare const _default: Erii;
108
+ export default _default;
package/dist/index.js ADDED
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Erii = void 0;
4
+ const yargs = require('yargs-parser');
5
+ const CLI = require('clui'), clc = require('cli-color');
6
+ const chalk = require('chalk');
7
+ const validator = require('validator');
8
+ const convert_1 = require("./utils/convert");
9
+ ;
10
+ class Erii {
11
+ constructor() {
12
+ this.parsedArguments = {};
13
+ this.version = "1.0.0";
14
+ this.name = "Erii";
15
+ this.commands = {};
16
+ this.commonOptions = [];
17
+ this.rawArguments = process.argv.slice(2);
18
+ this.parsedArguments = yargs(process.argv.slice(2));
19
+ this.validator = validator;
20
+ // 不响应-后第二个字符起的命令
21
+ for (const key of Object.keys(this.parsedArguments)) {
22
+ if (key !== "_" && (!this.rawArguments.includes('--' + key) && !this.rawArguments.includes('-' + key))) {
23
+ delete this.parsedArguments[key];
24
+ }
25
+ }
26
+ }
27
+ /**
28
+ * 绑定命令处理函数
29
+ * @param config
30
+ * @param handler
31
+ */
32
+ bind(config, handler) {
33
+ if (config.name === undefined) {
34
+ return console.error(chalk.red("Invalid command binding, ignored."));
35
+ }
36
+ const { name, description, argument } = config;
37
+ const mainCommand = Array.isArray(name) ? name.shift() : name;
38
+ this.commands[mainCommand] = {
39
+ name: mainCommand,
40
+ description,
41
+ argument,
42
+ alias: [],
43
+ options: [],
44
+ handler
45
+ };
46
+ if (Array.isArray(name)) {
47
+ for (const alias of name) {
48
+ this.commands[mainCommand].alias.push(alias);
49
+ this.commands[alias] = {
50
+ name: alias,
51
+ redirect: mainCommand
52
+ };
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * 总是执行
58
+ * @param handler
59
+ */
60
+ always(handler) {
61
+ this.alwaysHandler = handler;
62
+ }
63
+ /**
64
+ *
65
+ */
66
+ default(handler) {
67
+ this.defaultHandler = handler;
68
+ }
69
+ /**
70
+ * 增加设置项
71
+ * @param config
72
+ */
73
+ addOption(config) {
74
+ config.name = Array.isArray(config.name) ? config.name : [config.name];
75
+ if (!config.command) {
76
+ this.commonOptions.push(config);
77
+ }
78
+ else {
79
+ if (!(config.command in this.commands)) {
80
+ return console.error(chalk.red(`Command for option [${config.name.join(', ')}] not found, ignored.`));
81
+ }
82
+ this.commands[config.command].options.push(config);
83
+ }
84
+ }
85
+ /**
86
+ *
87
+ * @param command
88
+ */
89
+ commandCtx(command) {
90
+ return {
91
+ showVersion: () => {
92
+ this.showVersion();
93
+ },
94
+ showHelp: () => {
95
+ this.showHelp();
96
+ },
97
+ getArgument: (commandName = command) => {
98
+ return this.getArgument(commandName);
99
+ }
100
+ };
101
+ }
102
+ /**
103
+ * 设定基础信息
104
+ * @param metaInfo
105
+ */
106
+ setMetaInfo({ version = "", name = "" } = {}) {
107
+ this.version = version;
108
+ this.name = name;
109
+ }
110
+ /**
111
+ * 显示帮助信息
112
+ */
113
+ showHelp(command) {
114
+ this.showVersion();
115
+ console.log('\nHelp:');
116
+ const Line = CLI.Line;
117
+ new Line()
118
+ .padding(5)
119
+ .column('Commands', 30, [clc.cyan])
120
+ .column('Description', 30, [clc.cyan])
121
+ .column('Alias', 20, [clc.cyan])
122
+ .output();
123
+ new Line().output();
124
+ for (const key of Object.keys(this.commands)) {
125
+ if (this.commands[key].redirect) {
126
+ continue;
127
+ }
128
+ let commandText = '--' + key;
129
+ let aliasText = '';
130
+ if (this.commands[key].argument) {
131
+ commandText += ` <${this.commands[key].argument.name}>`;
132
+ }
133
+ if (this.commands[key].alias.length > 0) {
134
+ const aliasWithPrefixes = this.commands[key].alias.map(alias => alias.length === 1 ? `-${alias}` : `--${alias}`);
135
+ aliasText += aliasWithPrefixes.join(' / ');
136
+ }
137
+ new Line()
138
+ .padding(5)
139
+ .column(commandText, 30)
140
+ .column(this.commands[key].description, 30)
141
+ .column(aliasText, 20)
142
+ .output();
143
+ if (this.commands[key].argument) {
144
+ // 参数说明
145
+ new Line()
146
+ .padding(9)
147
+ .column(`<${this.commands[key].argument.name}>`, 26)
148
+ .column(this.commands[key].argument.description, 30)
149
+ .output();
150
+ }
151
+ if (this.commands[key].options.length > 0) {
152
+ // 设置项说明
153
+ for (const option of this.commands[key].options) {
154
+ let optionsText = '';
155
+ const optionName = Array.isArray(option.name) ? option.name : [option.name];
156
+ if (option.argument) {
157
+ optionsText += `--${optionName.join(', ')} <${option.argument.name}>`;
158
+ }
159
+ else {
160
+ optionsText += `--${optionName.join(', ')}`;
161
+ }
162
+ ;
163
+ new Line()
164
+ .padding(9)
165
+ .column(optionsText, 26)
166
+ .column(option.description || '')
167
+ .output();
168
+ if (option.argument) {
169
+ // 设置项参数说明
170
+ new Line()
171
+ .padding(13)
172
+ .column(`<${option.argument.name}>`, 22)
173
+ .column(option.argument.description || '')
174
+ .output();
175
+ }
176
+ }
177
+ }
178
+ }
179
+ new Line().output();
180
+ if (this.commonOptions.length > 0) {
181
+ // 通用设置项说明
182
+ console.log('Options:\n');
183
+ new Line()
184
+ .padding(5)
185
+ .column('Options', 30, [clc.cyan])
186
+ .column('Description', 30, [clc.cyan])
187
+ .output();
188
+ for (const option of this.commonOptions) {
189
+ let optionsText = '';
190
+ const optionName = Array.isArray(option.name) ? option.name : [option.name];
191
+ if (option.argument) {
192
+ optionsText += `--${optionName.join(', ')} <${option.argument.name}>`;
193
+ }
194
+ else {
195
+ optionsText += `--${optionName.join(', ')}`;
196
+ }
197
+ ;
198
+ new Line()
199
+ .padding(5)
200
+ .column(optionsText, 30)
201
+ .column(option.description || '')
202
+ .output();
203
+ if (option.argument) {
204
+ // 设置项参数说明
205
+ new Line()
206
+ .padding(9)
207
+ .column(`<${option.argument.name}>`, 26)
208
+ .column(option.argument.description || '')
209
+ .output();
210
+ }
211
+ }
212
+ }
213
+ }
214
+ /**
215
+ * 显示版本号
216
+ */
217
+ showVersion() {
218
+ console.log(`${this.name} / ${this.version}`);
219
+ }
220
+ /**
221
+ * 启动
222
+ */
223
+ start() {
224
+ if (this.alwaysHandler) {
225
+ this.alwaysHandler();
226
+ }
227
+ if (this.defaultHandler) {
228
+ if (this.parsedArguments['_'].length === 0 && Object.keys(this.parsedArguments).length === 1) {
229
+ this.defaultHandler();
230
+ }
231
+ }
232
+ for (const key of Object.keys(this.parsedArguments)) {
233
+ if (key in this.commands) {
234
+ this.exec(key);
235
+ }
236
+ }
237
+ for (const key of this.parsedArguments['_']) {
238
+ if (key in this.commands) {
239
+ this.exec(key);
240
+ }
241
+ }
242
+ }
243
+ /**
244
+ * 执行命令担当函数
245
+ * @param command
246
+ * @param extraArguments
247
+ */
248
+ exec(command) {
249
+ if (this.commands[command].redirect) {
250
+ // 别名重定向
251
+ this.exec(this.commands[command].redirect);
252
+ }
253
+ else {
254
+ // 传递绑定的设置及通用设置
255
+ const options = {};
256
+ const bandOptions = this.commands[command].options.concat(this.commonOptions);
257
+ for (const option of bandOptions) {
258
+ for (const name of option.name) {
259
+ if (name in this.parsedArguments) {
260
+ // do option argument validation
261
+ if (this.validateArgument(this.parsedArguments[name], option.argument)) {
262
+ options[option.name[0]] = this.parsedArguments[name];
263
+ }
264
+ else {
265
+ console.error(chalk.red(`Argument validation failed for option '${name}'.`));
266
+ if (typeof option.argument.validate === 'string') {
267
+ console.error(chalk.red(`<${option.argument.name}> should be a/an ${option.argument.validate.slice(2)}.`));
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ // do command argument validation
274
+ if (this.validateArgument(this.parsedArguments[command], this.commands[command].argument)) {
275
+ this.commands[command].handler(this.commandCtx(command), convert_1.createCamelProxifiedObject(options));
276
+ }
277
+ else {
278
+ console.error(chalk.red(`Argument validation failed for command ${command}`));
279
+ const validateMethod = this.commands[command].argument.validate;
280
+ if (typeof validateMethod === 'string') {
281
+ console.error(chalk.red(`<${this.commands[command].argument.name}> should be a/an ${validateMethod.slice(2)}.`));
282
+ }
283
+ }
284
+ }
285
+ }
286
+ validateArgument(argumentValue, argument) {
287
+ if (!argument || !argument.validate) {
288
+ // no need to validate
289
+ return true;
290
+ }
291
+ if (typeof argument.validate === "string") {
292
+ if (argument.validate in this.validator) {
293
+ return this.validator[argument.validate](argumentValue.toString());
294
+ }
295
+ else {
296
+ console.error(chalk.red(`Unknown validate method for ${argument.name}.`));
297
+ return true;
298
+ }
299
+ }
300
+ else {
301
+ // custom validator
302
+ return argument.validate(argumentValue, (message) => {
303
+ console.log(chalk.red(message));
304
+ });
305
+ }
306
+ }
307
+ /**
308
+ * 获得命令的参数
309
+ * @param commandName
310
+ * @param followRedirect 是否遵循重定向
311
+ */
312
+ getArgument(commandName, followRedirect = true) {
313
+ if (this.commands[commandName]) {
314
+ if (this.commands[commandName].redirect) {
315
+ return this.getArgument(this.commands[commandName].redirect);
316
+ }
317
+ else {
318
+ if (Object.keys(this.parsedArguments).includes(commandName) && commandName !== '_') {
319
+ return this.parsedArguments[commandName];
320
+ }
321
+ else {
322
+ for (const alias of this.commands[commandName].alias) {
323
+ if (Object.keys(this.parsedArguments).includes(alias)) {
324
+ return this.parsedArguments[alias];
325
+ }
326
+ }
327
+ console.error(chalk.red(`Command ${commandName} not found.`));
328
+ }
329
+ }
330
+ }
331
+ else {
332
+ console.error(chalk.red(`Command ${commandName} not found.`));
333
+ }
334
+ }
335
+ /**
336
+ * 启动
337
+ * エリイ 起きてます❤
338
+ */
339
+ okite() {
340
+ return this.start();
341
+ }
342
+ }
343
+ exports.Erii = Erii;
344
+ exports.default = new Erii();
345
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare function toCamelCase(str: string): string;
2
+ export declare function toKebabCase(str: string): string;
3
+ export declare function convertObjectKey(before: {
4
+ [index: string]: any;
5
+ }): {
6
+ [k: string]: any;
7
+ };
8
+ export declare function createCamelProxifiedObject(before: {
9
+ [index: string]: any;
10
+ }): {
11
+ [index: string]: any;
12
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCamelProxifiedObject = exports.convertObjectKey = exports.toKebabCase = exports.toCamelCase = void 0;
4
+ function toCamelCase(str) {
5
+ return str.replace(/([-_][a-z])/gi, ($1) => {
6
+ return $1.toUpperCase().replace("-", "");
7
+ });
8
+ }
9
+ exports.toCamelCase = toCamelCase;
10
+ function toKebabCase(str) {
11
+ return str[0].toLowerCase() +
12
+ str
13
+ .slice(1, str.length)
14
+ .replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
15
+ }
16
+ exports.toKebabCase = toKebabCase;
17
+ function convertObjectKey(before) {
18
+ return Object.fromEntries(Object.entries(before).map(([key, value]) => [toCamelCase(key), value]));
19
+ }
20
+ exports.convertObjectKey = convertObjectKey;
21
+ function createCamelProxifiedObject(before) {
22
+ return new Proxy(before, {
23
+ get: (target, key) => {
24
+ var _a;
25
+ return (_a = target[key]) !== null && _a !== void 0 ? _a : target[toKebabCase(key)];
26
+ },
27
+ });
28
+ }
29
+ exports.createCamelProxifiedObject = createCamelProxifiedObject;
30
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/utils/convert.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE;QACvC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAJD,kCAIC;AAED,SAAgB,WAAW,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QACvB,GAAG;aACE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;aACpB,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AALD,kCAKC;AAED,SAAgB,gBAAgB,CAAC,MAAgC;IAC7D,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAC1E,CAAC;AACN,CAAC;AAJD,4CAIC;AAED,SAAgB,0BAA0B,CAAC,MAAgC;IACvE,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACrB,GAAG,EAAE,CAAC,MAAqB,EAAE,GAAW,EAAE,EAAE;;YACxC,aAAO,MAAM,CAAC,GAAG,CAAC,mCAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAND,gEAMC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "erii",
3
- "version": "2.0.1",
3
+ "version": "2.0.4",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -20,8 +20,8 @@
20
20
  "dependencies": {
21
21
  "chalk": "^2.4.1",
22
22
  "clui": "^0.3.6",
23
- "validator": "^10.2.0",
24
- "yargs-parser": "^13.1.2"
23
+ "validator": "^13.7.0",
24
+ "yargs-parser": "^21.0.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^10.17.48",
@@ -20,7 +20,7 @@ export function convertObjectKey(before: { [index: string]: any }) {
20
20
  export function createCamelProxifiedObject(before: { [index: string]: any }) {
21
21
  return new Proxy(before, {
22
22
  get: (target: typeof before, key: string) => {
23
- return target[key] || target[toKebabCase(key)];
23
+ return target[key] ?? target[toKebabCase(key)];
24
24
  },
25
25
  });
26
26
  }