bob-core 1.0.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/package.json +1 -0
- package/dist/{Cli.d.ts → cjs/src/Cli.d.ts} +4 -4
- package/dist/{Cli.js → cjs/src/Cli.js} +6 -6
- package/dist/{Command.d.ts → cjs/src/Command.d.ts} +2 -2
- package/dist/{Command.js → cjs/src/Command.js} +4 -4
- package/dist/{Command.test.js → cjs/src/Command.test.js} +4 -4
- package/dist/{CommandParser.d.ts → cjs/src/CommandParser.d.ts} +1 -1
- package/dist/{CommandParser.js → cjs/src/CommandParser.js} +13 -13
- package/dist/{CommandParser.test.js → cjs/src/CommandParser.test.js} +5 -5
- package/dist/{CommandRegistry.d.ts → cjs/src/CommandRegistry.d.ts} +1 -1
- package/dist/{CommandRegistry.js → cjs/src/CommandRegistry.js} +21 -11
- package/dist/{ExceptionHandler.d.ts → cjs/src/ExceptionHandler.d.ts} +1 -1
- package/dist/{ExceptionHandler.js → cjs/src/ExceptionHandler.js} +2 -2
- package/dist/{commands → cjs/src/commands}/HelpCommand.d.ts +2 -2
- package/dist/cjs/src/commands/HelpCommand.js +90 -0
- package/dist/cjs/src/contracts/index.d.ts +1 -0
- package/dist/{contracts → cjs/src/contracts}/index.js +1 -1
- package/dist/{errors → cjs/src/errors}/BadCommandOption.d.ts +1 -1
- package/dist/{errors → cjs/src/errors}/BadCommandOption.js +2 -2
- package/dist/{errors → cjs/src/errors}/BadCommandParameter.d.ts +1 -1
- package/dist/{errors → cjs/src/errors}/BadCommandParameter.js +2 -2
- package/dist/{errors → cjs/src/errors}/CommandNotFoundError.d.ts +1 -1
- package/dist/{errors → cjs/src/errors}/CommandNotFoundError.js +2 -2
- package/dist/{errors → cjs/src/errors}/InvalidOption.d.ts +2 -2
- package/dist/{errors → cjs/src/errors}/InvalidOption.js +2 -2
- package/dist/{errors → cjs/src/errors}/MissingRequiredArgumentValue.d.ts +2 -2
- package/dist/{errors → cjs/src/errors}/MissingRequiredArgumentValue.js +2 -2
- package/dist/{errors → cjs/src/errors}/MissingSignatureArgument.d.ts +2 -2
- package/dist/{errors → cjs/src/errors}/MissingSignatureArgument.js +2 -2
- package/dist/{errors → cjs/src/errors}/MissingSignatureOption.d.ts +2 -2
- package/dist/{errors → cjs/src/errors}/MissingSignatureOption.js +2 -2
- package/dist/cjs/src/errors/index.d.ts +3 -0
- package/dist/{errors → cjs/src/errors}/index.js +3 -3
- package/dist/cjs/src/index.d.ts +5 -0
- package/dist/{index.js → cjs/src/index.js} +5 -5
- package/dist/{lib → cjs/src/lib}/string.js +1 -2
- package/dist/{options → cjs/src/options}/HelpOption.d.ts +2 -2
- package/dist/{options → cjs/src/options}/HelpOption.js +5 -6
- package/dist/cjs/src/options/index.d.ts +1 -0
- package/dist/{options → cjs/src/options}/index.js +1 -1
- package/dist/esm/package.json +50 -0
- package/dist/esm/src/Cli.d.ts +26 -0
- package/dist/esm/src/Cli.js +59 -0
- package/dist/esm/src/Command.d.ts +34 -0
- package/dist/esm/src/Command.js +93 -0
- package/dist/esm/src/Command.test.d.ts +1 -0
- package/dist/esm/src/Command.test.js +50 -0
- package/dist/esm/src/CommandParser.d.ts +46 -0
- package/dist/esm/src/CommandParser.js +232 -0
- package/dist/esm/src/CommandParser.test.d.ts +1 -0
- package/dist/esm/src/CommandParser.test.js +175 -0
- package/dist/esm/src/CommandRegistry.d.ts +17 -0
- package/dist/esm/src/CommandRegistry.js +109 -0
- package/dist/esm/src/ExceptionHandler.d.ts +4 -0
- package/dist/esm/src/ExceptionHandler.js +10 -0
- package/dist/esm/src/commands/HelpCommand.d.ts +14 -0
- package/dist/esm/src/commands/HelpCommand.js +51 -0
- package/dist/esm/src/contracts/CommandOption.d.ts +7 -0
- package/dist/esm/src/contracts/CommandOption.js +1 -0
- package/dist/esm/src/contracts/index.d.ts +1 -0
- package/dist/esm/src/contracts/index.js +1 -0
- package/dist/esm/src/errors/BadCommandOption.d.ts +11 -0
- package/dist/esm/src/errors/BadCommandOption.js +29 -0
- package/dist/esm/src/errors/BadCommandParameter.d.ts +11 -0
- package/dist/esm/src/errors/BadCommandParameter.js +29 -0
- package/dist/esm/src/errors/BobError.d.ts +3 -0
- package/dist/esm/src/errors/BobError.js +2 -0
- package/dist/esm/src/errors/CommandNotFoundError.d.ts +7 -0
- package/dist/esm/src/errors/CommandNotFoundError.js +23 -0
- package/dist/esm/src/errors/InvalidOption.d.ts +8 -0
- package/dist/esm/src/errors/InvalidOption.js +25 -0
- package/dist/esm/src/errors/MissingRequiredArgumentValue.d.ts +7 -0
- package/dist/esm/src/errors/MissingRequiredArgumentValue.js +16 -0
- package/dist/esm/src/errors/MissingSignatureArgument.d.ts +8 -0
- package/dist/esm/src/errors/MissingSignatureArgument.js +24 -0
- package/dist/esm/src/errors/MissingSignatureOption.d.ts +8 -0
- package/dist/esm/src/errors/MissingSignatureOption.js +24 -0
- package/dist/esm/src/errors/index.d.ts +3 -0
- package/dist/esm/src/errors/index.js +3 -0
- package/dist/esm/src/index.d.ts +5 -0
- package/dist/esm/src/index.js +5 -0
- package/dist/esm/src/lib/string.d.ts +1 -0
- package/dist/esm/src/lib/string.js +3 -0
- package/dist/esm/src/options/HelpOption.d.ts +9 -0
- package/dist/esm/src/options/HelpOption.js +70 -0
- package/dist/esm/src/options/index.d.ts +1 -0
- package/dist/esm/src/options/index.js +1 -0
- package/package.json +22 -7
- package/dist/CommandHelper.d.ts +0 -4
- package/dist/CommandHelper.js +0 -74
- package/dist/commands/HelpCommand.js +0 -56
- package/dist/contracts/index.d.ts +0 -1
- package/dist/errors/index.d.ts +0 -3
- package/dist/index.d.ts +0 -5
- package/dist/options/index.d.ts +0 -1
- /package/dist/{Command.test.d.ts → cjs/src/Command.test.d.ts} +0 -0
- /package/dist/{CommandParser.test.d.ts → cjs/src/CommandParser.test.d.ts} +0 -0
- /package/dist/{contracts → cjs/src/contracts}/CommandOption.d.ts +0 -0
- /package/dist/{contracts → cjs/src/contracts}/CommandOption.js +0 -0
- /package/dist/{errors → cjs/src/errors}/BobError.d.ts +0 -0
- /package/dist/{errors → cjs/src/errors}/BobError.js +0 -0
- /package/dist/{lib → cjs/src/lib}/string.d.ts +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { BobError } from "../errors/BobError.js";
|
|
3
|
+
export class MissingSignatureOption extends BobError {
|
|
4
|
+
option;
|
|
5
|
+
optionsSignature;
|
|
6
|
+
constructor(option, optionsSignature) {
|
|
7
|
+
super(`Missing ${option} in the command signature`);
|
|
8
|
+
this.option = option;
|
|
9
|
+
this.optionsSignature = optionsSignature;
|
|
10
|
+
}
|
|
11
|
+
pretty() {
|
|
12
|
+
const log = console.log;
|
|
13
|
+
if (this.optionsSignature.length) {
|
|
14
|
+
log(chalk `{yellow Available options}:`);
|
|
15
|
+
for (const option of this.optionsSignature) {
|
|
16
|
+
const type = option.type ? chalk `{white (${option.type})}` : '';
|
|
17
|
+
const spaces = ' '.repeat(20 - option.name.length);
|
|
18
|
+
log(chalk ` {green ${option.name}} ${spaces} ${option.help ?? '\b'} ${type}`);
|
|
19
|
+
}
|
|
20
|
+
log('');
|
|
21
|
+
}
|
|
22
|
+
log(chalk ` {white.bgRed ERROR } Option {bold.yellow ${this.option}} is missing in the signature.`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateSpace(nb: number): string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from "../Command.js";
|
|
2
|
+
import { CommandOption } from "../contracts/index.js";
|
|
3
|
+
export declare class HelpOption implements CommandOption<Command> {
|
|
4
|
+
option: string;
|
|
5
|
+
alias: string[];
|
|
6
|
+
defaultValue: boolean;
|
|
7
|
+
description: string;
|
|
8
|
+
handler(this: Command): Promise<number | void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { generateSpace } from "../lib/string.js";
|
|
3
|
+
export class HelpOption {
|
|
4
|
+
option = 'help';
|
|
5
|
+
alias = ['h'];
|
|
6
|
+
defaultValue = false;
|
|
7
|
+
description = chalk `Display help for the given command. When no command is given display help for the {green list} command`;
|
|
8
|
+
async handler() {
|
|
9
|
+
const log = console.log;
|
|
10
|
+
const availableArguments = Object.values(this.parser.getArgumentSignatures());
|
|
11
|
+
const availableOptions = Object.values(this.parser.getOptionSignatures())
|
|
12
|
+
.map((signature) => ({
|
|
13
|
+
...signature,
|
|
14
|
+
optionWithAlias: `--${signature.name}${signature.alias?.map(a => `, -${a}`).join('') ?? ''}`
|
|
15
|
+
}));
|
|
16
|
+
const requiredArguments = availableArguments.filter((signature) => !signature.optional);
|
|
17
|
+
log(chalk `{yellow Description}:`);
|
|
18
|
+
log(chalk ` ${this.description}\n`);
|
|
19
|
+
log(chalk `{yellow Usage}:`);
|
|
20
|
+
log(chalk ` ${this.command} ${requiredArguments.length > 0 ? requiredArguments.map((signature) => `<${signature.name}>`).join(' ') : '\b'} [options]`);
|
|
21
|
+
const maxOptionLength = Math.max(...availableOptions.map((signature) => signature.optionWithAlias.length)) ?? 0;
|
|
22
|
+
const maxArgumentLength = Math.max(...availableArguments.map((arg) => arg.name.length)) ?? 0;
|
|
23
|
+
const maxLength = maxArgumentLength > maxOptionLength ? maxArgumentLength : maxOptionLength;
|
|
24
|
+
if (availableArguments.length > 0) {
|
|
25
|
+
log(chalk `\n{yellow Arguments}:`);
|
|
26
|
+
for (const signature of availableArguments) {
|
|
27
|
+
const spaces = generateSpace(maxLength - signature.name.length);
|
|
28
|
+
let message = chalk ` {green ${signature.name}} ${spaces} ${signature.help ?? '\b'}`;
|
|
29
|
+
if (signature.defaultValue !== undefined && signature.optional) {
|
|
30
|
+
const defaultValue = signature.type === 'array' ? JSON.stringify(signature.defaultValue) : signature.defaultValue;
|
|
31
|
+
message += chalk ` {yellow [default: ${defaultValue}]}`;
|
|
32
|
+
}
|
|
33
|
+
if (signature.variadic) {
|
|
34
|
+
message += chalk ` {white (variadic)}`;
|
|
35
|
+
}
|
|
36
|
+
log(message);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (availableOptions.length > 0) {
|
|
40
|
+
log(chalk `\n{yellow Options}:`);
|
|
41
|
+
for (const signature of availableOptions) {
|
|
42
|
+
const spaces = generateSpace(maxLength - signature.optionWithAlias.length);
|
|
43
|
+
let message = chalk `{green ${signature.optionWithAlias}} ${spaces} ${signature.help ?? '\b'}`;
|
|
44
|
+
if (signature.type) {
|
|
45
|
+
message += chalk ` {white (${signature.type})}`;
|
|
46
|
+
}
|
|
47
|
+
if (signature.defaultValue !== undefined && signature.optional) {
|
|
48
|
+
const defaultValue = signature.type === 'array' ? JSON.stringify(signature.defaultValue) : signature.defaultValue;
|
|
49
|
+
message += chalk ` {yellow [default: ${defaultValue}]}`;
|
|
50
|
+
}
|
|
51
|
+
log(message);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (this.commandsExamples.length > 0) {
|
|
55
|
+
log(chalk `\n{yellow Examples}:`);
|
|
56
|
+
let binaryName = process.argv[0].split('/').pop();
|
|
57
|
+
if (binaryName === 'node') {
|
|
58
|
+
binaryName += ' ' + process.argv[1].split('/').pop();
|
|
59
|
+
}
|
|
60
|
+
for (const [index, example] of this.commandsExamples.entries()) {
|
|
61
|
+
if (index > 0) {
|
|
62
|
+
log('');
|
|
63
|
+
}
|
|
64
|
+
log(` ${example.description}\n`);
|
|
65
|
+
log(chalk ` {green ${binaryName} ${example.command}}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return -1;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './HelpOption.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './HelpOption.js';
|
package/package.json
CHANGED
|
@@ -1,34 +1,49 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bob-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "BOB Core",
|
|
5
|
-
"
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
5
|
+
"type": "module",
|
|
7
6
|
"files": [
|
|
8
7
|
"/dist"
|
|
9
8
|
],
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/esm/index.js",
|
|
12
|
+
"require": "./dist/cjs/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"typesVersions": {
|
|
16
|
+
"*": {
|
|
17
|
+
"*": [
|
|
18
|
+
"./dist/cjs/index.d.ts"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
},
|
|
10
22
|
"scripts": {
|
|
11
23
|
"start": "node -r @swc-node/register debug/main.ts",
|
|
12
|
-
"build": "
|
|
24
|
+
"build": "rimraf ./dist && npm run build:cjs && npm run build:esm",
|
|
25
|
+
"build:cjs": "tsc --project tsconfig.json --module commonjs --verbatimModuleSyntax false --moduleResolution node10 --outDir ./dist/cjs && tsc-alias -p tsconfig.json --outDir ./dist/cjs && echo >./dist/cjs/package.json '{\"type\":\"commonjs\"}'",
|
|
26
|
+
"build:esm": "tsc --project tsconfig.json --outDir ./dist/esm && tsc-alias -p tsconfig.json --outDir ./dist/esm",
|
|
13
27
|
"prepare": "npm run build",
|
|
14
28
|
"test": "jest"
|
|
15
29
|
},
|
|
16
30
|
"author": "Léo Hubert",
|
|
17
31
|
"license": "ISC",
|
|
18
32
|
"devDependencies": {
|
|
19
|
-
"@swc-node/register": "^1.
|
|
33
|
+
"@swc-node/register": "^1.11.1",
|
|
20
34
|
"@types/jest": "^29.5.12",
|
|
21
35
|
"@types/lodash": "^4.17.5",
|
|
22
36
|
"@types/minimist": "^1.2.5",
|
|
23
37
|
"@types/node": "^20.14.5",
|
|
24
38
|
"@types/string-similarity": "^4.0.2",
|
|
25
39
|
"jest": "^29.7.0",
|
|
40
|
+
"rimraf": "^6.0.1",
|
|
26
41
|
"ts-jest": "^29.1.5",
|
|
27
|
-
"
|
|
42
|
+
"tsc-alias": "^1.8.16",
|
|
43
|
+
"typescript": "^5.7.3"
|
|
28
44
|
},
|
|
29
45
|
"dependencies": {
|
|
30
46
|
"chalk": "^4.1.2",
|
|
31
|
-
"lodash": "^4.17.21",
|
|
32
47
|
"minimist": "^1.2.8",
|
|
33
48
|
"string-similarity": "^4.0.4"
|
|
34
49
|
}
|
package/dist/CommandHelper.d.ts
DELETED
package/dist/CommandHelper.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CommandHelper = void 0;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const lodash_1 = require("lodash");
|
|
9
|
-
const string_1 = require("./lib/string");
|
|
10
|
-
class CommandHelper {
|
|
11
|
-
help() {
|
|
12
|
-
const log = console.log;
|
|
13
|
-
const availableArguments = Object.values(this.parser.getArgumentSignatures());
|
|
14
|
-
const availableOptions = Object.values(this.parser.getOptionSignatures())
|
|
15
|
-
.map((signature) => ({
|
|
16
|
-
...signature,
|
|
17
|
-
optionWithAlias: `--${signature.name}${signature.alias?.map(a => `, -${a}`).join('') ?? ''}`
|
|
18
|
-
}));
|
|
19
|
-
const requiredArguments = availableArguments.filter((signature) => !signature.optional);
|
|
20
|
-
log((0, chalk_1.default) `{yellow Description}:`);
|
|
21
|
-
log((0, chalk_1.default) ` ${this.description}\n`);
|
|
22
|
-
log((0, chalk_1.default) `{yellow Usage}:`);
|
|
23
|
-
log((0, chalk_1.default) ` ${this.command} ${requiredArguments.length > 0 ? requiredArguments.map((signature) => `<${signature.name}>`).join(' ') : '\b'} [options]`);
|
|
24
|
-
const maxOptionLength = (0, lodash_1.max)(availableOptions.map((signature) => signature.optionWithAlias.length)) ?? 0;
|
|
25
|
-
const maxArgumentLength = (0, lodash_1.max)(availableArguments.map((arg) => arg.name.length)) ?? 0;
|
|
26
|
-
const maxLength = maxArgumentLength > maxOptionLength ? maxArgumentLength : maxOptionLength;
|
|
27
|
-
if (availableArguments.length > 0) {
|
|
28
|
-
log((0, chalk_1.default) `\n{yellow Arguments}:`);
|
|
29
|
-
for (const signature of availableArguments) {
|
|
30
|
-
const spaces = (0, string_1.generateSpace)(maxLength - signature.name.length);
|
|
31
|
-
let message = (0, chalk_1.default) ` {green ${signature.name}} ${spaces} ${signature.help ?? '\b'}`;
|
|
32
|
-
if (signature.defaultValue !== undefined && signature.optional) {
|
|
33
|
-
const defaultValue = signature.type === 'array' ? JSON.stringify(signature.defaultValue) : signature.defaultValue;
|
|
34
|
-
message += (0, chalk_1.default) ` {yellow [default: ${defaultValue}]}`;
|
|
35
|
-
}
|
|
36
|
-
if (signature.variadic) {
|
|
37
|
-
message += (0, chalk_1.default) ` {white (variadic)}`;
|
|
38
|
-
}
|
|
39
|
-
log(message);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (availableOptions.length > 0) {
|
|
43
|
-
log((0, chalk_1.default) `\n{yellow Options}:`);
|
|
44
|
-
for (const signature of availableOptions) {
|
|
45
|
-
const spaces = (0, string_1.generateSpace)(maxLength - signature.optionWithAlias.length);
|
|
46
|
-
let message = (0, chalk_1.default) `{green ${signature.optionWithAlias}} ${spaces} ${signature.help ?? '\b'}`;
|
|
47
|
-
if (signature.type) {
|
|
48
|
-
message += (0, chalk_1.default) ` {white (${signature.type})}`;
|
|
49
|
-
}
|
|
50
|
-
if (signature.defaultValue !== undefined && signature.optional) {
|
|
51
|
-
const defaultValue = signature.type === 'array' ? JSON.stringify(signature.defaultValue) : signature.defaultValue;
|
|
52
|
-
message += (0, chalk_1.default) ` {yellow [default: ${defaultValue}]}`;
|
|
53
|
-
}
|
|
54
|
-
log(message);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (this.commandsExamples.length > 0) {
|
|
58
|
-
log((0, chalk_1.default) `\n{yellow Examples}:`);
|
|
59
|
-
let binaryName = process.argv[0].split('/').pop();
|
|
60
|
-
if (binaryName === 'node') {
|
|
61
|
-
binaryName += ' ' + process.argv[1].split('/').pop();
|
|
62
|
-
}
|
|
63
|
-
for (const [index, example] of this.commandsExamples.entries()) {
|
|
64
|
-
if (index > 0) {
|
|
65
|
-
log('');
|
|
66
|
-
}
|
|
67
|
-
log(` ${example.description}\n`);
|
|
68
|
-
log((0, chalk_1.default) ` {green ${binaryName} ${example.command}}`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return -1;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.CommandHelper = CommandHelper;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const Command_1 = require("../Command");
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const lodash_1 = require("lodash");
|
|
9
|
-
const string_1 = require("../lib/string");
|
|
10
|
-
class HelpCommand extends Command_1.Command {
|
|
11
|
-
opts;
|
|
12
|
-
signature = 'help';
|
|
13
|
-
description = 'Show help';
|
|
14
|
-
constructor(opts) {
|
|
15
|
-
super();
|
|
16
|
-
this.opts = opts;
|
|
17
|
-
}
|
|
18
|
-
async handle() {
|
|
19
|
-
const commands = this.opts.commandRegistry.getCommands();
|
|
20
|
-
const cliName = this.opts.cliName ?? 'Bob CLI';
|
|
21
|
-
const version = this.opts.cliVersion ?? '0.0.0';
|
|
22
|
-
const coreVersion = require('../../package.json').version;
|
|
23
|
-
console.log((0, chalk_1.default) `${cliName} {green ${version}} (core: {yellow ${coreVersion}})
|
|
24
|
-
|
|
25
|
-
{yellow Usage}:
|
|
26
|
-
command [options] [arguments]
|
|
27
|
-
|
|
28
|
-
{yellow Available commands}:
|
|
29
|
-
`);
|
|
30
|
-
const maxCommandLength = (0, lodash_1.max)(commands.map(command => command.command.length)) ?? 0;
|
|
31
|
-
const commandByGroups = {};
|
|
32
|
-
for (const command of commands) {
|
|
33
|
-
const commandGroup = command.command.split(':')[0];
|
|
34
|
-
if (!commandByGroups[commandGroup]) {
|
|
35
|
-
commandByGroups[commandGroup] = [];
|
|
36
|
-
}
|
|
37
|
-
commandByGroups[commandGroup].push(command);
|
|
38
|
-
}
|
|
39
|
-
const sortedCommandsByGroups = (0, lodash_1.orderBy)((0, lodash_1.orderBy)(Object.entries(commandByGroups), [([group]) => group.toLowerCase()], ['asc']), [([_, commands]) => commands.length], ['asc']);
|
|
40
|
-
for (const [group, groupCommands] of sortedCommandsByGroups) {
|
|
41
|
-
const isGrouped = groupCommands.length > 1;
|
|
42
|
-
if (isGrouped) {
|
|
43
|
-
console.log((0, chalk_1.default) `{yellow ${group}}:`);
|
|
44
|
-
}
|
|
45
|
-
const sortedGroupCommands = (0, lodash_1.orderBy)(groupCommands, [command => command.command.toLowerCase()], ['asc']);
|
|
46
|
-
for (const command of sortedGroupCommands) {
|
|
47
|
-
let spaces = (0, string_1.generateSpace)(maxCommandLength - command.command.length);
|
|
48
|
-
if (isGrouped) {
|
|
49
|
-
spaces = spaces.slice(2);
|
|
50
|
-
}
|
|
51
|
-
console.log((0, chalk_1.default) `${isGrouped ? ' ' : ''}{green ${command.command}} ${spaces} ${command.description}`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.default = HelpCommand;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './CommandOption';
|
package/dist/errors/index.d.ts
DELETED
package/dist/index.d.ts
DELETED
package/dist/options/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './HelpOption';
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|