breadc 0.4.1 → 0.4.2
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 +1 -1
- package/dist/index.cjs +5 -253
- package/dist/index.d.ts +12 -257
- package/dist/index.mjs +4 -252
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ cli.run(process.argv.slice(2))
|
|
|
40
40
|
.catch(err => cli.logger.error(err.message))
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
If you are using IDEs that support TypeScript (like [Visual Studio Code](https://code.visualstudio.com/)),
|
|
43
|
+
If you are using IDEs that support TypeScript (like [Visual Studio Code](https://code.visualstudio.com/)), input something using `option`, and then you will find the `option` is automatically typed with `{ host: string, port: number }`. In the figure below, [Visual Studio Code](https://code.visualstudio.com/) will automatically infer that the type of `option.host` is `string` and the type of `option.port` is `number`.
|
|
44
44
|
|
|
45
45
|

|
|
46
46
|
|
package/dist/index.cjs
CHANGED
|
@@ -3,260 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const kolorist = require('kolorist');
|
|
6
|
+
const minimist = require('minimist');
|
|
6
7
|
|
|
7
8
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
8
9
|
|
|
9
10
|
const kolorist__default = /*#__PURE__*/_interopDefaultLegacy(kolorist);
|
|
10
|
-
|
|
11
|
-
var minimist = function (args, opts) {
|
|
12
|
-
if (!opts) opts = {};
|
|
13
|
-
|
|
14
|
-
var flags = { bools : {}, strings : {}, unknownFn: null };
|
|
15
|
-
|
|
16
|
-
if (typeof opts['unknown'] === 'function') {
|
|
17
|
-
flags.unknownFn = opts['unknown'];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
|
|
21
|
-
flags.allBools = true;
|
|
22
|
-
} else {
|
|
23
|
-
[].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
|
|
24
|
-
flags.bools[key] = true;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
var aliases = {};
|
|
29
|
-
Object.keys(opts.alias || {}).forEach(function (key) {
|
|
30
|
-
aliases[key] = [].concat(opts.alias[key]);
|
|
31
|
-
aliases[key].forEach(function (x) {
|
|
32
|
-
aliases[x] = [key].concat(aliases[key].filter(function (y) {
|
|
33
|
-
return x !== y;
|
|
34
|
-
}));
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
[].concat(opts.string).filter(Boolean).forEach(function (key) {
|
|
39
|
-
flags.strings[key] = true;
|
|
40
|
-
if (aliases[key]) {
|
|
41
|
-
flags.strings[aliases[key]] = true;
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
var defaults = opts['default'] || {};
|
|
46
|
-
|
|
47
|
-
var argv = { _ : [] };
|
|
48
|
-
Object.keys(flags.bools).forEach(function (key) {
|
|
49
|
-
setArg(key, defaults[key] === undefined ? false : defaults[key]);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
var notFlags = [];
|
|
53
|
-
|
|
54
|
-
if (args.indexOf('--') !== -1) {
|
|
55
|
-
notFlags = args.slice(args.indexOf('--')+1);
|
|
56
|
-
args = args.slice(0, args.indexOf('--'));
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function argDefined(key, arg) {
|
|
60
|
-
return (flags.allBools && /^--[^=]+$/.test(arg)) ||
|
|
61
|
-
flags.strings[key] || flags.bools[key] || aliases[key];
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function setArg (key, val, arg) {
|
|
65
|
-
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
|
66
|
-
if (flags.unknownFn(arg) === false) return;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
var value = !flags.strings[key] && isNumber(val)
|
|
70
|
-
? Number(val) : val
|
|
71
|
-
;
|
|
72
|
-
setKey(argv, key.split('.'), value);
|
|
73
|
-
|
|
74
|
-
(aliases[key] || []).forEach(function (x) {
|
|
75
|
-
setKey(argv, x.split('.'), value);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
function setKey (obj, keys, value) {
|
|
80
|
-
var o = obj;
|
|
81
|
-
for (var i = 0; i < keys.length-1; i++) {
|
|
82
|
-
var key = keys[i];
|
|
83
|
-
if (isConstructorOrProto(o, key)) return;
|
|
84
|
-
if (o[key] === undefined) o[key] = {};
|
|
85
|
-
if (o[key] === Object.prototype || o[key] === Number.prototype
|
|
86
|
-
|| o[key] === String.prototype) o[key] = {};
|
|
87
|
-
if (o[key] === Array.prototype) o[key] = [];
|
|
88
|
-
o = o[key];
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
var key = keys[keys.length - 1];
|
|
92
|
-
if (isConstructorOrProto(o, key)) return;
|
|
93
|
-
if (o === Object.prototype || o === Number.prototype
|
|
94
|
-
|| o === String.prototype) o = {};
|
|
95
|
-
if (o === Array.prototype) o = [];
|
|
96
|
-
if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
|
|
97
|
-
o[key] = value;
|
|
98
|
-
}
|
|
99
|
-
else if (Array.isArray(o[key])) {
|
|
100
|
-
o[key].push(value);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
o[key] = [ o[key], value ];
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
function aliasIsBoolean(key) {
|
|
108
|
-
return aliases[key].some(function (x) {
|
|
109
|
-
return flags.bools[x];
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
for (var i = 0; i < args.length; i++) {
|
|
114
|
-
var arg = args[i];
|
|
115
|
-
|
|
116
|
-
if (/^--.+=/.test(arg)) {
|
|
117
|
-
// Using [\s\S] instead of . because js doesn't support the
|
|
118
|
-
// 'dotall' regex modifier. See:
|
|
119
|
-
// http://stackoverflow.com/a/1068308/13216
|
|
120
|
-
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
121
|
-
var key = m[1];
|
|
122
|
-
var value = m[2];
|
|
123
|
-
if (flags.bools[key]) {
|
|
124
|
-
value = value !== 'false';
|
|
125
|
-
}
|
|
126
|
-
setArg(key, value, arg);
|
|
127
|
-
}
|
|
128
|
-
else if (/^--no-.+/.test(arg)) {
|
|
129
|
-
var key = arg.match(/^--no-(.+)/)[1];
|
|
130
|
-
setArg(key, false, arg);
|
|
131
|
-
}
|
|
132
|
-
else if (/^--.+/.test(arg)) {
|
|
133
|
-
var key = arg.match(/^--(.+)/)[1];
|
|
134
|
-
var next = args[i + 1];
|
|
135
|
-
if (next !== undefined && !/^-/.test(next)
|
|
136
|
-
&& !flags.bools[key]
|
|
137
|
-
&& !flags.allBools
|
|
138
|
-
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
139
|
-
setArg(key, next, arg);
|
|
140
|
-
i++;
|
|
141
|
-
}
|
|
142
|
-
else if (/^(true|false)$/.test(next)) {
|
|
143
|
-
setArg(key, next === 'true', arg);
|
|
144
|
-
i++;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
else if (/^-[^-]+/.test(arg)) {
|
|
151
|
-
var letters = arg.slice(1,-1).split('');
|
|
152
|
-
|
|
153
|
-
var broken = false;
|
|
154
|
-
for (var j = 0; j < letters.length; j++) {
|
|
155
|
-
var next = arg.slice(j+2);
|
|
156
|
-
|
|
157
|
-
if (next === '-') {
|
|
158
|
-
setArg(letters[j], next, arg);
|
|
159
|
-
continue;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
|
|
163
|
-
setArg(letters[j], next.split('=')[1], arg);
|
|
164
|
-
broken = true;
|
|
165
|
-
break;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (/[A-Za-z]/.test(letters[j])
|
|
169
|
-
&& /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
170
|
-
setArg(letters[j], next, arg);
|
|
171
|
-
broken = true;
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
if (letters[j+1] && letters[j+1].match(/\W/)) {
|
|
176
|
-
setArg(letters[j], arg.slice(j+2), arg);
|
|
177
|
-
broken = true;
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
var key = arg.slice(-1)[0];
|
|
186
|
-
if (!broken && key !== '-') {
|
|
187
|
-
if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
|
|
188
|
-
&& !flags.bools[key]
|
|
189
|
-
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
190
|
-
setArg(key, args[i+1], arg);
|
|
191
|
-
i++;
|
|
192
|
-
}
|
|
193
|
-
else if (args[i+1] && /^(true|false)$/.test(args[i+1])) {
|
|
194
|
-
setArg(key, args[i+1] === 'true', arg);
|
|
195
|
-
i++;
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
204
|
-
argv._.push(
|
|
205
|
-
flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
|
|
206
|
-
);
|
|
207
|
-
}
|
|
208
|
-
if (opts.stopEarly) {
|
|
209
|
-
argv._.push.apply(argv._, args.slice(i + 1));
|
|
210
|
-
break;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
Object.keys(defaults).forEach(function (key) {
|
|
216
|
-
if (!hasKey(argv, key.split('.'))) {
|
|
217
|
-
setKey(argv, key.split('.'), defaults[key]);
|
|
218
|
-
|
|
219
|
-
(aliases[key] || []).forEach(function (x) {
|
|
220
|
-
setKey(argv, x.split('.'), defaults[key]);
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
if (opts['--']) {
|
|
226
|
-
argv['--'] = new Array();
|
|
227
|
-
notFlags.forEach(function(key) {
|
|
228
|
-
argv['--'].push(key);
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
notFlags.forEach(function(key) {
|
|
233
|
-
argv._.push(key);
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
return argv;
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
function hasKey (obj, keys) {
|
|
241
|
-
var o = obj;
|
|
242
|
-
keys.slice(0,-1).forEach(function (key) {
|
|
243
|
-
o = (o[key] || {});
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
var key = keys[keys.length - 1];
|
|
247
|
-
return key in o;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
function isNumber (x) {
|
|
251
|
-
if (typeof x === 'number') return true;
|
|
252
|
-
if (/^0x[0-9a-f]+$/i.test(x)) return true;
|
|
253
|
-
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
function isConstructorOrProto (obj, key) {
|
|
258
|
-
return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__';
|
|
259
|
-
}
|
|
11
|
+
const minimist__default = /*#__PURE__*/_interopDefaultLegacy(minimist);
|
|
260
12
|
|
|
261
13
|
function createDefaultLogger(name, logger) {
|
|
262
14
|
const println = !!logger && typeof logger === "function" ? logger : logger?.println ?? ((message, ...args) => {
|
|
@@ -427,7 +179,7 @@ const _Command = class {
|
|
|
427
179
|
}
|
|
428
180
|
async run(...args) {
|
|
429
181
|
if (this.actionFn) {
|
|
430
|
-
this.actionFn(...args);
|
|
182
|
+
this.actionFn(...args, { logger: this.logger });
|
|
431
183
|
} else {
|
|
432
184
|
this.logger.warn(`You may miss action function in "${this.format}"`);
|
|
433
185
|
}
|
|
@@ -587,7 +339,7 @@ class Breadc {
|
|
|
587
339
|
}
|
|
588
340
|
return map;
|
|
589
341
|
}, {});
|
|
590
|
-
const argv =
|
|
342
|
+
const argv = minimist__default(args, {
|
|
591
343
|
string: allowOptions.filter((o) => o.type === "string").map((o) => o.name),
|
|
592
344
|
boolean: allowOptions.filter((o) => o.type === "boolean").map((o) => o.name),
|
|
593
345
|
alias,
|
|
@@ -645,5 +397,5 @@ function breadc(name, option = {}) {
|
|
|
645
397
|
}
|
|
646
398
|
|
|
647
399
|
exports.kolorist = kolorist__default;
|
|
400
|
+
exports.minimist = minimist__default;
|
|
648
401
|
exports["default"] = breadc;
|
|
649
|
-
exports.minimist = minimist;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,255 +1,7 @@
|
|
|
1
|
+
import { ParsedArgs } from 'minimist';
|
|
2
|
+
export { default as minimist } from 'minimist';
|
|
1
3
|
export { default as kolorist } from 'kolorist';
|
|
2
4
|
|
|
3
|
-
var minimist = function (args, opts) {
|
|
4
|
-
if (!opts) opts = {};
|
|
5
|
-
|
|
6
|
-
var flags = { bools : {}, strings : {}, unknownFn: null };
|
|
7
|
-
|
|
8
|
-
if (typeof opts['unknown'] === 'function') {
|
|
9
|
-
flags.unknownFn = opts['unknown'];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
|
|
13
|
-
flags.allBools = true;
|
|
14
|
-
} else {
|
|
15
|
-
[].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
|
|
16
|
-
flags.bools[key] = true;
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
var aliases = {};
|
|
21
|
-
Object.keys(opts.alias || {}).forEach(function (key) {
|
|
22
|
-
aliases[key] = [].concat(opts.alias[key]);
|
|
23
|
-
aliases[key].forEach(function (x) {
|
|
24
|
-
aliases[x] = [key].concat(aliases[key].filter(function (y) {
|
|
25
|
-
return x !== y;
|
|
26
|
-
}));
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
[].concat(opts.string).filter(Boolean).forEach(function (key) {
|
|
31
|
-
flags.strings[key] = true;
|
|
32
|
-
if (aliases[key]) {
|
|
33
|
-
flags.strings[aliases[key]] = true;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
var defaults = opts['default'] || {};
|
|
38
|
-
|
|
39
|
-
var argv = { _ : [] };
|
|
40
|
-
Object.keys(flags.bools).forEach(function (key) {
|
|
41
|
-
setArg(key, defaults[key] === undefined ? false : defaults[key]);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
var notFlags = [];
|
|
45
|
-
|
|
46
|
-
if (args.indexOf('--') !== -1) {
|
|
47
|
-
notFlags = args.slice(args.indexOf('--')+1);
|
|
48
|
-
args = args.slice(0, args.indexOf('--'));
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function argDefined(key, arg) {
|
|
52
|
-
return (flags.allBools && /^--[^=]+$/.test(arg)) ||
|
|
53
|
-
flags.strings[key] || flags.bools[key] || aliases[key];
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function setArg (key, val, arg) {
|
|
57
|
-
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
|
58
|
-
if (flags.unknownFn(arg) === false) return;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
var value = !flags.strings[key] && isNumber(val)
|
|
62
|
-
? Number(val) : val
|
|
63
|
-
;
|
|
64
|
-
setKey(argv, key.split('.'), value);
|
|
65
|
-
|
|
66
|
-
(aliases[key] || []).forEach(function (x) {
|
|
67
|
-
setKey(argv, x.split('.'), value);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function setKey (obj, keys, value) {
|
|
72
|
-
var o = obj;
|
|
73
|
-
for (var i = 0; i < keys.length-1; i++) {
|
|
74
|
-
var key = keys[i];
|
|
75
|
-
if (isConstructorOrProto(o, key)) return;
|
|
76
|
-
if (o[key] === undefined) o[key] = {};
|
|
77
|
-
if (o[key] === Object.prototype || o[key] === Number.prototype
|
|
78
|
-
|| o[key] === String.prototype) o[key] = {};
|
|
79
|
-
if (o[key] === Array.prototype) o[key] = [];
|
|
80
|
-
o = o[key];
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
var key = keys[keys.length - 1];
|
|
84
|
-
if (isConstructorOrProto(o, key)) return;
|
|
85
|
-
if (o === Object.prototype || o === Number.prototype
|
|
86
|
-
|| o === String.prototype) o = {};
|
|
87
|
-
if (o === Array.prototype) o = [];
|
|
88
|
-
if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
|
|
89
|
-
o[key] = value;
|
|
90
|
-
}
|
|
91
|
-
else if (Array.isArray(o[key])) {
|
|
92
|
-
o[key].push(value);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
o[key] = [ o[key], value ];
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function aliasIsBoolean(key) {
|
|
100
|
-
return aliases[key].some(function (x) {
|
|
101
|
-
return flags.bools[x];
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
for (var i = 0; i < args.length; i++) {
|
|
106
|
-
var arg = args[i];
|
|
107
|
-
|
|
108
|
-
if (/^--.+=/.test(arg)) {
|
|
109
|
-
// Using [\s\S] instead of . because js doesn't support the
|
|
110
|
-
// 'dotall' regex modifier. See:
|
|
111
|
-
// http://stackoverflow.com/a/1068308/13216
|
|
112
|
-
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
113
|
-
var key = m[1];
|
|
114
|
-
var value = m[2];
|
|
115
|
-
if (flags.bools[key]) {
|
|
116
|
-
value = value !== 'false';
|
|
117
|
-
}
|
|
118
|
-
setArg(key, value, arg);
|
|
119
|
-
}
|
|
120
|
-
else if (/^--no-.+/.test(arg)) {
|
|
121
|
-
var key = arg.match(/^--no-(.+)/)[1];
|
|
122
|
-
setArg(key, false, arg);
|
|
123
|
-
}
|
|
124
|
-
else if (/^--.+/.test(arg)) {
|
|
125
|
-
var key = arg.match(/^--(.+)/)[1];
|
|
126
|
-
var next = args[i + 1];
|
|
127
|
-
if (next !== undefined && !/^-/.test(next)
|
|
128
|
-
&& !flags.bools[key]
|
|
129
|
-
&& !flags.allBools
|
|
130
|
-
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
131
|
-
setArg(key, next, arg);
|
|
132
|
-
i++;
|
|
133
|
-
}
|
|
134
|
-
else if (/^(true|false)$/.test(next)) {
|
|
135
|
-
setArg(key, next === 'true', arg);
|
|
136
|
-
i++;
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
else if (/^-[^-]+/.test(arg)) {
|
|
143
|
-
var letters = arg.slice(1,-1).split('');
|
|
144
|
-
|
|
145
|
-
var broken = false;
|
|
146
|
-
for (var j = 0; j < letters.length; j++) {
|
|
147
|
-
var next = arg.slice(j+2);
|
|
148
|
-
|
|
149
|
-
if (next === '-') {
|
|
150
|
-
setArg(letters[j], next, arg);
|
|
151
|
-
continue;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
|
|
155
|
-
setArg(letters[j], next.split('=')[1], arg);
|
|
156
|
-
broken = true;
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (/[A-Za-z]/.test(letters[j])
|
|
161
|
-
&& /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
162
|
-
setArg(letters[j], next, arg);
|
|
163
|
-
broken = true;
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
if (letters[j+1] && letters[j+1].match(/\W/)) {
|
|
168
|
-
setArg(letters[j], arg.slice(j+2), arg);
|
|
169
|
-
broken = true;
|
|
170
|
-
break;
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
var key = arg.slice(-1)[0];
|
|
178
|
-
if (!broken && key !== '-') {
|
|
179
|
-
if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
|
|
180
|
-
&& !flags.bools[key]
|
|
181
|
-
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
182
|
-
setArg(key, args[i+1], arg);
|
|
183
|
-
i++;
|
|
184
|
-
}
|
|
185
|
-
else if (args[i+1] && /^(true|false)$/.test(args[i+1])) {
|
|
186
|
-
setArg(key, args[i+1] === 'true', arg);
|
|
187
|
-
i++;
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
196
|
-
argv._.push(
|
|
197
|
-
flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
|
|
198
|
-
);
|
|
199
|
-
}
|
|
200
|
-
if (opts.stopEarly) {
|
|
201
|
-
argv._.push.apply(argv._, args.slice(i + 1));
|
|
202
|
-
break;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
Object.keys(defaults).forEach(function (key) {
|
|
208
|
-
if (!hasKey(argv, key.split('.'))) {
|
|
209
|
-
setKey(argv, key.split('.'), defaults[key]);
|
|
210
|
-
|
|
211
|
-
(aliases[key] || []).forEach(function (x) {
|
|
212
|
-
setKey(argv, x.split('.'), defaults[key]);
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
if (opts['--']) {
|
|
218
|
-
argv['--'] = new Array();
|
|
219
|
-
notFlags.forEach(function(key) {
|
|
220
|
-
argv['--'].push(key);
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
notFlags.forEach(function(key) {
|
|
225
|
-
argv._.push(key);
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
return argv;
|
|
230
|
-
};
|
|
231
|
-
|
|
232
|
-
function hasKey (obj, keys) {
|
|
233
|
-
var o = obj;
|
|
234
|
-
keys.slice(0,-1).forEach(function (key) {
|
|
235
|
-
o = (o[key] || {});
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
var key = keys[keys.length - 1];
|
|
239
|
-
return key in o;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
function isNumber (x) {
|
|
243
|
-
if (typeof x === 'number') return true;
|
|
244
|
-
if (/^0x[0-9a-f]+$/i.test(x)) return true;
|
|
245
|
-
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
function isConstructorOrProto (obj, key) {
|
|
250
|
-
return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__';
|
|
251
|
-
}
|
|
252
|
-
|
|
253
5
|
interface OptionConfig<F extends string, T = never> {
|
|
254
6
|
description?: string;
|
|
255
7
|
default?: T;
|
|
@@ -277,7 +29,7 @@ declare class Option<T extends string = string, F = string> {
|
|
|
277
29
|
constructor(format: T, config?: OptionConfig<T, F>);
|
|
278
30
|
}
|
|
279
31
|
|
|
280
|
-
declare type ConditionFn = (args:
|
|
32
|
+
declare type ConditionFn = (args: ParsedArgs) => boolean;
|
|
281
33
|
interface CommandConfig {
|
|
282
34
|
description?: string;
|
|
283
35
|
}
|
|
@@ -297,8 +49,8 @@ declare class Command<F extends string = string, CommandOption extends object =
|
|
|
297
49
|
option<OF extends string, T = undefined>(format: OF, description: string, config?: Omit<OptionConfig<OF, T>, 'description'>): Command<F, CommandOption & ExtractOption<OF, T>>;
|
|
298
50
|
option<OF extends string, T = undefined>(format: OF, config?: OptionConfig<OF, T>): Command<F, CommandOption & ExtractOption<OF, T>>;
|
|
299
51
|
get hasConditionFn(): boolean;
|
|
300
|
-
shouldRun(args:
|
|
301
|
-
parseArgs(args:
|
|
52
|
+
shouldRun(args: ParsedArgs): boolean;
|
|
53
|
+
parseArgs(args: ParsedArgs, globalOptions: Option[]): ParseResult;
|
|
302
54
|
action(fn: ActionFn<ExtractCommand<F>, CommandOption>): this;
|
|
303
55
|
run(...args: any[]): Promise<void>;
|
|
304
56
|
}
|
|
@@ -337,12 +89,15 @@ declare type ExtractOptionType<T extends string> = T extends `-${Letter}, --${in
|
|
|
337
89
|
declare type Lowercase = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
|
|
338
90
|
declare type Uppercase = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z';
|
|
339
91
|
declare type Letter = Lowercase | Uppercase;
|
|
340
|
-
declare type Push<T extends any[], U> = [...T, U];
|
|
341
|
-
declare type
|
|
92
|
+
declare type Push<T extends any[], U, R> = [...T, U, R];
|
|
93
|
+
declare type Context = {
|
|
94
|
+
logger: Logger;
|
|
95
|
+
};
|
|
96
|
+
declare type ActionFn<T extends any[], Option extends object = {}> = (...arg: Push<T, Option, Context>) => void;
|
|
342
97
|
/**
|
|
343
98
|
* Max Dep: 5
|
|
344
99
|
*
|
|
345
|
-
* Generated by: npx tsx
|
|
100
|
+
* Generated by: npx tsx examples/genType.ts 5
|
|
346
101
|
*/
|
|
347
102
|
declare type ExtractCommand<T extends string> = T extends `<${infer P1}> <${infer P2}> <${infer P3}> <${infer P4}> [...${infer P5}]` ? [string, string, string, string, string[]] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> <${infer P4}> [${infer P5}]` ? [string, string, string, string, string | undefined] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> <${infer P4}> <${infer P5}>` ? [string, string, string, string, string] : T extends `${infer P1} <${infer P2}> <${infer P3}> <${infer P4}> [...${infer P5}]` ? [string, string, string, string[]] : T extends `${infer P1} <${infer P2}> <${infer P3}> <${infer P4}> [${infer P5}]` ? [string, string, string, string | undefined] : T extends `${infer P1} <${infer P2}> <${infer P3}> <${infer P4}> <${infer P5}>` ? [string, string, string, string] : T extends `${infer P1} ${infer P2} <${infer P3}> <${infer P4}> [...${infer P5}]` ? [string, string, string[]] : T extends `${infer P1} ${infer P2} <${infer P3}> <${infer P4}> [${infer P5}]` ? [string, string, string | undefined] : T extends `${infer P1} ${infer P2} <${infer P3}> <${infer P4}> <${infer P5}>` ? [string, string, string] : T extends `${infer P1} ${infer P2} ${infer P3} <${infer P4}> [...${infer P5}]` ? [string, string[]] : T extends `${infer P1} ${infer P2} ${infer P3} <${infer P4}> [${infer P5}]` ? [string, string | undefined] : T extends `${infer P1} ${infer P2} ${infer P3} <${infer P4}> <${infer P5}>` ? [string, string] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> [...${infer P4}]` ? [string, string, string, string[]] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> [${infer P4}]` ? [string, string, string, string | undefined] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> <${infer P4}>` ? [string, string, string, string] : T extends `${infer P1} <${infer P2}> <${infer P3}> [...${infer P4}]` ? [string, string, string[]] : T extends `${infer P1} <${infer P2}> <${infer P3}> [${infer P4}]` ? [string, string, string | undefined] : T extends `${infer P1} <${infer P2}> <${infer P3}> <${infer P4}>` ? [string, string, string] : T extends `${infer P1} ${infer P2} <${infer P3}> [...${infer P4}]` ? [string, string[]] : T extends `${infer P1} ${infer P2} <${infer P3}> [${infer P4}]` ? [string, string | undefined] : T extends `${infer P1} ${infer P2} <${infer P3}> <${infer P4}>` ? [string, string] : T extends `${infer P1} ${infer P2} ${infer P3} [...${infer P4}]` ? [string[]] : T extends `${infer P1} ${infer P2} ${infer P3} [${infer P4}]` ? [string | undefined] : T extends `${infer P1} ${infer P2} ${infer P3} <${infer P4}>` ? [string] : T extends `<${infer P1}> <${infer P2}> [...${infer P3}]` ? [string, string, string[]] : T extends `<${infer P1}> <${infer P2}> [${infer P3}]` ? [string, string, string | undefined] : T extends `<${infer P1}> <${infer P2}> <${infer P3}>` ? [string, string, string] : T extends `${infer P1} <${infer P2}> [...${infer P3}]` ? [string, string[]] : T extends `${infer P1} <${infer P2}> [${infer P3}]` ? [string, string | undefined] : T extends `${infer P1} <${infer P2}> <${infer P3}>` ? [string, string] : T extends `${infer P1} ${infer P2} [...${infer P3}]` ? [string[]] : T extends `${infer P1} ${infer P2} [${infer P3}]` ? [string | undefined] : T extends `${infer P1} ${infer P2} <${infer P3}>` ? [string] : T extends `${infer P1} ${infer P2} ${infer P3}` ? [] : T extends `<${infer P1}> [...${infer P2}]` ? [string, string[]] : T extends `<${infer P1}> [${infer P2}]` ? [string, string | undefined] : T extends `<${infer P1}> <${infer P2}>` ? [string, string] : T extends `${infer P1} [...${infer P2}]` ? [string[]] : T extends `${infer P1} [${infer P2}]` ? [string | undefined] : T extends `${infer P1} <${infer P2}>` ? [string] : T extends `${infer P1} ${infer P2}` ? [] : T extends `[...${infer P1}]` ? [string[]] : T extends `[${infer P1}]` ? [string | undefined] : T extends `<${infer P1}>` ? [string] : T extends `${infer P1}` ? [] : T extends `` ? [] : never;
|
|
348
103
|
|
|
@@ -367,4 +122,4 @@ declare class Breadc<GlobalOption extends object = {}> {
|
|
|
367
122
|
|
|
368
123
|
declare function breadc(name: string, option?: AppOption): Breadc<{}>;
|
|
369
124
|
|
|
370
|
-
export { breadc as default
|
|
125
|
+
export { breadc as default };
|
package/dist/index.mjs
CHANGED
|
@@ -1,255 +1,7 @@
|
|
|
1
1
|
import { blue, yellow, red, gray } from 'kolorist';
|
|
2
2
|
export { default as kolorist } from 'kolorist';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!opts) opts = {};
|
|
6
|
-
|
|
7
|
-
var flags = { bools : {}, strings : {}, unknownFn: null };
|
|
8
|
-
|
|
9
|
-
if (typeof opts['unknown'] === 'function') {
|
|
10
|
-
flags.unknownFn = opts['unknown'];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
|
|
14
|
-
flags.allBools = true;
|
|
15
|
-
} else {
|
|
16
|
-
[].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
|
|
17
|
-
flags.bools[key] = true;
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
var aliases = {};
|
|
22
|
-
Object.keys(opts.alias || {}).forEach(function (key) {
|
|
23
|
-
aliases[key] = [].concat(opts.alias[key]);
|
|
24
|
-
aliases[key].forEach(function (x) {
|
|
25
|
-
aliases[x] = [key].concat(aliases[key].filter(function (y) {
|
|
26
|
-
return x !== y;
|
|
27
|
-
}));
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
[].concat(opts.string).filter(Boolean).forEach(function (key) {
|
|
32
|
-
flags.strings[key] = true;
|
|
33
|
-
if (aliases[key]) {
|
|
34
|
-
flags.strings[aliases[key]] = true;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
var defaults = opts['default'] || {};
|
|
39
|
-
|
|
40
|
-
var argv = { _ : [] };
|
|
41
|
-
Object.keys(flags.bools).forEach(function (key) {
|
|
42
|
-
setArg(key, defaults[key] === undefined ? false : defaults[key]);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
var notFlags = [];
|
|
46
|
-
|
|
47
|
-
if (args.indexOf('--') !== -1) {
|
|
48
|
-
notFlags = args.slice(args.indexOf('--')+1);
|
|
49
|
-
args = args.slice(0, args.indexOf('--'));
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function argDefined(key, arg) {
|
|
53
|
-
return (flags.allBools && /^--[^=]+$/.test(arg)) ||
|
|
54
|
-
flags.strings[key] || flags.bools[key] || aliases[key];
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function setArg (key, val, arg) {
|
|
58
|
-
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
|
59
|
-
if (flags.unknownFn(arg) === false) return;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
var value = !flags.strings[key] && isNumber(val)
|
|
63
|
-
? Number(val) : val
|
|
64
|
-
;
|
|
65
|
-
setKey(argv, key.split('.'), value);
|
|
66
|
-
|
|
67
|
-
(aliases[key] || []).forEach(function (x) {
|
|
68
|
-
setKey(argv, x.split('.'), value);
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function setKey (obj, keys, value) {
|
|
73
|
-
var o = obj;
|
|
74
|
-
for (var i = 0; i < keys.length-1; i++) {
|
|
75
|
-
var key = keys[i];
|
|
76
|
-
if (isConstructorOrProto(o, key)) return;
|
|
77
|
-
if (o[key] === undefined) o[key] = {};
|
|
78
|
-
if (o[key] === Object.prototype || o[key] === Number.prototype
|
|
79
|
-
|| o[key] === String.prototype) o[key] = {};
|
|
80
|
-
if (o[key] === Array.prototype) o[key] = [];
|
|
81
|
-
o = o[key];
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
var key = keys[keys.length - 1];
|
|
85
|
-
if (isConstructorOrProto(o, key)) return;
|
|
86
|
-
if (o === Object.prototype || o === Number.prototype
|
|
87
|
-
|| o === String.prototype) o = {};
|
|
88
|
-
if (o === Array.prototype) o = [];
|
|
89
|
-
if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
|
|
90
|
-
o[key] = value;
|
|
91
|
-
}
|
|
92
|
-
else if (Array.isArray(o[key])) {
|
|
93
|
-
o[key].push(value);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
o[key] = [ o[key], value ];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function aliasIsBoolean(key) {
|
|
101
|
-
return aliases[key].some(function (x) {
|
|
102
|
-
return flags.bools[x];
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
for (var i = 0; i < args.length; i++) {
|
|
107
|
-
var arg = args[i];
|
|
108
|
-
|
|
109
|
-
if (/^--.+=/.test(arg)) {
|
|
110
|
-
// Using [\s\S] instead of . because js doesn't support the
|
|
111
|
-
// 'dotall' regex modifier. See:
|
|
112
|
-
// http://stackoverflow.com/a/1068308/13216
|
|
113
|
-
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
114
|
-
var key = m[1];
|
|
115
|
-
var value = m[2];
|
|
116
|
-
if (flags.bools[key]) {
|
|
117
|
-
value = value !== 'false';
|
|
118
|
-
}
|
|
119
|
-
setArg(key, value, arg);
|
|
120
|
-
}
|
|
121
|
-
else if (/^--no-.+/.test(arg)) {
|
|
122
|
-
var key = arg.match(/^--no-(.+)/)[1];
|
|
123
|
-
setArg(key, false, arg);
|
|
124
|
-
}
|
|
125
|
-
else if (/^--.+/.test(arg)) {
|
|
126
|
-
var key = arg.match(/^--(.+)/)[1];
|
|
127
|
-
var next = args[i + 1];
|
|
128
|
-
if (next !== undefined && !/^-/.test(next)
|
|
129
|
-
&& !flags.bools[key]
|
|
130
|
-
&& !flags.allBools
|
|
131
|
-
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
132
|
-
setArg(key, next, arg);
|
|
133
|
-
i++;
|
|
134
|
-
}
|
|
135
|
-
else if (/^(true|false)$/.test(next)) {
|
|
136
|
-
setArg(key, next === 'true', arg);
|
|
137
|
-
i++;
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
else if (/^-[^-]+/.test(arg)) {
|
|
144
|
-
var letters = arg.slice(1,-1).split('');
|
|
145
|
-
|
|
146
|
-
var broken = false;
|
|
147
|
-
for (var j = 0; j < letters.length; j++) {
|
|
148
|
-
var next = arg.slice(j+2);
|
|
149
|
-
|
|
150
|
-
if (next === '-') {
|
|
151
|
-
setArg(letters[j], next, arg);
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
|
|
156
|
-
setArg(letters[j], next.split('=')[1], arg);
|
|
157
|
-
broken = true;
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (/[A-Za-z]/.test(letters[j])
|
|
162
|
-
&& /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
163
|
-
setArg(letters[j], next, arg);
|
|
164
|
-
broken = true;
|
|
165
|
-
break;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (letters[j+1] && letters[j+1].match(/\W/)) {
|
|
169
|
-
setArg(letters[j], arg.slice(j+2), arg);
|
|
170
|
-
broken = true;
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
var key = arg.slice(-1)[0];
|
|
179
|
-
if (!broken && key !== '-') {
|
|
180
|
-
if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
|
|
181
|
-
&& !flags.bools[key]
|
|
182
|
-
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
183
|
-
setArg(key, args[i+1], arg);
|
|
184
|
-
i++;
|
|
185
|
-
}
|
|
186
|
-
else if (args[i+1] && /^(true|false)$/.test(args[i+1])) {
|
|
187
|
-
setArg(key, args[i+1] === 'true', arg);
|
|
188
|
-
i++;
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
197
|
-
argv._.push(
|
|
198
|
-
flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
if (opts.stopEarly) {
|
|
202
|
-
argv._.push.apply(argv._, args.slice(i + 1));
|
|
203
|
-
break;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
Object.keys(defaults).forEach(function (key) {
|
|
209
|
-
if (!hasKey(argv, key.split('.'))) {
|
|
210
|
-
setKey(argv, key.split('.'), defaults[key]);
|
|
211
|
-
|
|
212
|
-
(aliases[key] || []).forEach(function (x) {
|
|
213
|
-
setKey(argv, x.split('.'), defaults[key]);
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
if (opts['--']) {
|
|
219
|
-
argv['--'] = new Array();
|
|
220
|
-
notFlags.forEach(function(key) {
|
|
221
|
-
argv['--'].push(key);
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
notFlags.forEach(function(key) {
|
|
226
|
-
argv._.push(key);
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
return argv;
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
function hasKey (obj, keys) {
|
|
234
|
-
var o = obj;
|
|
235
|
-
keys.slice(0,-1).forEach(function (key) {
|
|
236
|
-
o = (o[key] || {});
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
var key = keys[keys.length - 1];
|
|
240
|
-
return key in o;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
function isNumber (x) {
|
|
244
|
-
if (typeof x === 'number') return true;
|
|
245
|
-
if (/^0x[0-9a-f]+$/i.test(x)) return true;
|
|
246
|
-
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
function isConstructorOrProto (obj, key) {
|
|
251
|
-
return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__';
|
|
252
|
-
}
|
|
3
|
+
import minimist from 'minimist';
|
|
4
|
+
export { default as minimist } from 'minimist';
|
|
253
5
|
|
|
254
6
|
function createDefaultLogger(name, logger) {
|
|
255
7
|
const println = !!logger && typeof logger === "function" ? logger : logger?.println ?? ((message, ...args) => {
|
|
@@ -420,7 +172,7 @@ const _Command = class {
|
|
|
420
172
|
}
|
|
421
173
|
async run(...args) {
|
|
422
174
|
if (this.actionFn) {
|
|
423
|
-
this.actionFn(...args);
|
|
175
|
+
this.actionFn(...args, { logger: this.logger });
|
|
424
176
|
} else {
|
|
425
177
|
this.logger.warn(`You may miss action function in "${this.format}"`);
|
|
426
178
|
}
|
|
@@ -637,4 +389,4 @@ function breadc(name, option = {}) {
|
|
|
637
389
|
return new Breadc(name, option);
|
|
638
390
|
}
|
|
639
391
|
|
|
640
|
-
export { breadc as default
|
|
392
|
+
export { breadc as default };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "breadc",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Yet another Command Line Application Framework with fully strong TypeScript support",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -34,23 +34,23 @@
|
|
|
34
34
|
"dist"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"kolorist": "^1.5.1"
|
|
37
|
+
"kolorist": "^1.5.1",
|
|
38
|
+
"minimist": "^1.2.6"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
40
41
|
"@types/minimist": "^1.2.2",
|
|
41
|
-
"@types/node": "^
|
|
42
|
+
"@types/node": "^18.0.0",
|
|
42
43
|
"bumpp": "^8.2.1",
|
|
43
|
-
"minimist": "^1.2.6",
|
|
44
44
|
"prettier": "^2.7.1",
|
|
45
45
|
"typescript": "^4.7.4",
|
|
46
46
|
"unbuild": "^0.7.4",
|
|
47
47
|
"vite": "^2.9.12",
|
|
48
|
-
"vitest": "^0.15.
|
|
48
|
+
"vitest": "^0.15.2"
|
|
49
49
|
},
|
|
50
50
|
"packageManager": "pnpm@7.3.0",
|
|
51
51
|
"scripts": {
|
|
52
52
|
"build": "unbuild",
|
|
53
|
-
"format": "prettier --write src/**/*.ts test/*.ts examples/*.ts
|
|
53
|
+
"format": "prettier --write src/**/*.ts test/*.ts examples/*.ts",
|
|
54
54
|
"release": "bumpp --commit --push --tag && pnpm publish",
|
|
55
55
|
"test": "vitest",
|
|
56
56
|
"typecheck": "tsc --noEmit",
|