@cloud-copilot/cli 0.1.38 → 0.2.0
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 +86 -207
- package/dist/cjs/arguments/argument.d.ts +60 -0
- package/dist/cjs/arguments/argument.d.ts.map +1 -0
- package/dist/cjs/arguments/argument.js +3 -0
- package/dist/cjs/arguments/argument.js.map +1 -0
- package/dist/cjs/arguments/arrayValueArgument.d.ts +15 -0
- package/dist/cjs/arguments/arrayValueArgument.d.ts.map +1 -0
- package/dist/cjs/arguments/arrayValueArgument.js +38 -0
- package/dist/cjs/arguments/arrayValueArgument.js.map +1 -0
- package/dist/cjs/arguments/booleanArgument.d.ts +11 -0
- package/dist/cjs/arguments/booleanArgument.d.ts.map +1 -0
- package/dist/cjs/arguments/booleanArgument.js +25 -0
- package/dist/cjs/arguments/booleanArgument.js.map +1 -0
- package/dist/cjs/arguments/enumArgument.d.ts +15 -0
- package/dist/cjs/arguments/enumArgument.d.ts.map +1 -0
- package/dist/cjs/arguments/enumArgument.js +35 -0
- package/dist/cjs/arguments/enumArgument.js.map +1 -0
- package/dist/cjs/arguments/enumArrayArgument.d.ts +15 -0
- package/dist/cjs/arguments/enumArrayArgument.d.ts.map +1 -0
- package/dist/cjs/arguments/enumArrayArgument.js +42 -0
- package/dist/cjs/arguments/enumArrayArgument.js.map +1 -0
- package/dist/cjs/arguments/mapArgument.d.ts +18 -0
- package/dist/cjs/arguments/mapArgument.d.ts.map +1 -0
- package/dist/cjs/arguments/mapArgument.js +35 -0
- package/dist/cjs/arguments/mapArgument.js.map +1 -0
- package/dist/cjs/arguments/numberArguments.d.ts +17 -0
- package/dist/cjs/arguments/numberArguments.d.ts.map +1 -0
- package/dist/cjs/arguments/numberArguments.js +15 -0
- package/dist/cjs/arguments/numberArguments.js.map +1 -0
- package/dist/cjs/arguments/singleValueArgument.d.ts +15 -0
- package/dist/cjs/arguments/singleValueArgument.d.ts.map +1 -0
- package/dist/cjs/arguments/singleValueArgument.js +35 -0
- package/dist/cjs/arguments/singleValueArgument.js.map +1 -0
- package/dist/cjs/arguments/stringArguments.d.ts +17 -0
- package/dist/cjs/arguments/stringArguments.d.ts.map +1 -0
- package/dist/cjs/arguments/stringArguments.js +14 -0
- package/dist/cjs/arguments/stringArguments.js.map +1 -0
- package/dist/cjs/cli.d.ts +37 -89
- package/dist/cjs/cli.d.ts.map +1 -1
- package/dist/cjs/cli.js +171 -293
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/index.d.ts +11 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +20 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/readRelative.d.ts +25 -7
- package/dist/cjs/readRelative.d.ts.map +1 -1
- package/dist/cjs/readRelative.js +63 -20
- package/dist/cjs/readRelative.js.map +1 -1
- package/dist/esm/arguments/argument.d.ts +60 -0
- package/dist/esm/arguments/argument.d.ts.map +1 -0
- package/dist/esm/arguments/argument.js +2 -0
- package/dist/esm/arguments/argument.js.map +1 -0
- package/dist/esm/arguments/arrayValueArgument.d.ts +15 -0
- package/dist/esm/arguments/arrayValueArgument.d.ts.map +1 -0
- package/dist/esm/arguments/arrayValueArgument.js +35 -0
- package/dist/esm/arguments/arrayValueArgument.js.map +1 -0
- package/dist/esm/arguments/booleanArgument.d.ts +11 -0
- package/dist/esm/arguments/booleanArgument.d.ts.map +1 -0
- package/dist/esm/arguments/booleanArgument.js +22 -0
- package/dist/esm/arguments/booleanArgument.js.map +1 -0
- package/dist/esm/arguments/enumArgument.d.ts +15 -0
- package/dist/esm/arguments/enumArgument.d.ts.map +1 -0
- package/dist/esm/arguments/enumArgument.js +32 -0
- package/dist/esm/arguments/enumArgument.js.map +1 -0
- package/dist/esm/arguments/enumArrayArgument.d.ts +15 -0
- package/dist/esm/arguments/enumArrayArgument.d.ts.map +1 -0
- package/dist/esm/arguments/enumArrayArgument.js +39 -0
- package/dist/esm/arguments/enumArrayArgument.js.map +1 -0
- package/dist/esm/arguments/mapArgument.d.ts +18 -0
- package/dist/esm/arguments/mapArgument.d.ts.map +1 -0
- package/dist/esm/arguments/mapArgument.js +32 -0
- package/dist/esm/arguments/mapArgument.js.map +1 -0
- package/dist/esm/arguments/numberArguments.d.ts +17 -0
- package/dist/esm/arguments/numberArguments.d.ts.map +1 -0
- package/dist/esm/arguments/numberArguments.js +12 -0
- package/dist/esm/arguments/numberArguments.js.map +1 -0
- package/dist/esm/arguments/singleValueArgument.d.ts +15 -0
- package/dist/esm/arguments/singleValueArgument.d.ts.map +1 -0
- package/dist/esm/arguments/singleValueArgument.js +32 -0
- package/dist/esm/arguments/singleValueArgument.js.map +1 -0
- package/dist/esm/arguments/stringArguments.d.ts +17 -0
- package/dist/esm/arguments/stringArguments.d.ts.map +1 -0
- package/dist/esm/arguments/stringArguments.js +11 -0
- package/dist/esm/arguments/stringArguments.js.map +1 -0
- package/dist/esm/cli.d.ts +37 -89
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +171 -292
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/index.d.ts +11 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +10 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/readRelative.d.ts +25 -7
- package/dist/esm/readRelative.d.ts.map +1 -1
- package/dist/esm/readRelative.js +58 -19
- package/dist/esm/readRelative.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enumArrayArgument.js","sourceRoot":"","sources":["../../../src/arguments/enumArrayArgument.ts"],"names":[],"mappings":";;AAaA,8CA+CC;AA/CD,SAAgB,iBAAiB,CAE/B,OAAU;IACV,OAAO;QACL,WAAW,EACT,OAAO,CAAC,WAAW;YACnB,oDAAoD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACtF,cAAc,EAAE,KAAK,EACnB,YAA4C,EAC5C,MAAgB,EAC8B,EAAE;YAChD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAA;YACpE,CAAC;YACD,MAAM,aAAa,GAAa,EAAE,CAAA;YAClC,MAAM,WAAW,GAAuB,EAAE,CAAA;YAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;gBACtF,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC3B,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAA;gBAC7C,CAAC;YACH,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAC9H,CAAA;YACH,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;QAC5C,CAAC;QACD,YAAY,EAAE,KAAK,EACjB,OAAuC,EACvC,SAA6B,EAC7B,EAAE;YACF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;YAC1B,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI;KACjC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Argument, PerArgumentArgs } from './argument.js';
|
|
2
|
+
type MapResult = Record<string, string[]>;
|
|
3
|
+
/**
|
|
4
|
+
* Creates a map argument where the first value is the key and the rest are values.
|
|
5
|
+
*
|
|
6
|
+
* --arg-name key1 key1Value1 key1Value2 --arg-name key2 key2Value1 key2Value2
|
|
7
|
+
*
|
|
8
|
+
* @param options the description and optional default value
|
|
9
|
+
* @returns a map argument
|
|
10
|
+
*/
|
|
11
|
+
export declare function mapArgument<const O extends {
|
|
12
|
+
defaultValue: MapResult;
|
|
13
|
+
} & PerArgumentArgs>(options: O): Argument<MapResult>;
|
|
14
|
+
export declare function mapArgument<const O extends {
|
|
15
|
+
defaultValue?: undefined;
|
|
16
|
+
} & PerArgumentArgs>(options: O): Argument<MapResult | undefined>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=mapArgument.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapArgument.d.ts","sourceRoot":"","sources":["../../../src/arguments/mapArgument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAmB,MAAM,eAAe,CAAA;AAE1E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;AAEzC;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS;IAAE,YAAY,EAAE,SAAS,CAAA;CAAE,GAAG,eAAe,EACvF,OAAO,EAAE,CAAC,GACT,QAAQ,CAAC,SAAS,CAAC,CAAA;AACtB,wBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS;IAAE,YAAY,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,eAAe,EACxF,OAAO,EAAE,CAAC,GACT,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapArgument = mapArgument;
|
|
4
|
+
function mapArgument(options) {
|
|
5
|
+
return {
|
|
6
|
+
description: options.description + `. Each instance requires a key and at least one value.`,
|
|
7
|
+
validateValues: async (currentValue, values) => {
|
|
8
|
+
const [first, ...rest] = values;
|
|
9
|
+
if (!first) {
|
|
10
|
+
return { valid: false, message: 'a key is required and at least one value is required' };
|
|
11
|
+
}
|
|
12
|
+
if (rest.length < 1) {
|
|
13
|
+
return { valid: false, message: `${first} requires at least one value` };
|
|
14
|
+
}
|
|
15
|
+
if (currentValue && first in currentValue) {
|
|
16
|
+
return { valid: false, message: `${first} is set multiple times` };
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
valid: true,
|
|
20
|
+
value: {
|
|
21
|
+
[first]: rest
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
reduceValues: async (current, newValue) => {
|
|
26
|
+
if (!current) {
|
|
27
|
+
return { ...newValue };
|
|
28
|
+
}
|
|
29
|
+
return { ...current, ...newValue };
|
|
30
|
+
},
|
|
31
|
+
defaultValue: options.defaultValue,
|
|
32
|
+
acceptMultipleValues: () => true
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=mapArgument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapArgument.js","sourceRoot":"","sources":["../../../src/arguments/mapArgument.ts"],"names":[],"mappings":";;AAkBA,kCAmCC;AAnCD,SAAgB,WAAW,CAEzB,OAAU;IACV,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,GAAG,wDAAwD;QAC3F,cAAc,EAAE,KAAK,EACnB,YAAmC,EACnC,MAAgB,EACqB,EAAE;YACvC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAA;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,sDAAsD,EAAE,CAAA;YAC1F,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,8BAA8B,EAAE,CAAA;YAC1E,CAAC;YACD,IAAI,YAAY,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;gBAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,wBAAwB,EAAE,CAAA;YACpE,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE;oBACL,CAAC,KAAK,CAAC,EAAE,IAAI;iBACd;aACF,CAAA;QACH,CAAC;QACD,YAAY,EAAE,KAAK,EAAE,OAA8B,EAAE,QAAmB,EAAE,EAAE;YAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAA;YACxB,CAAC;YACD,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAA;QACpC,CAAC;QACD,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI;KACjC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const numberArgument: {
|
|
2
|
+
<const O extends {
|
|
3
|
+
defaultValue: number;
|
|
4
|
+
} & import("./argument.js").PerArgumentArgs>(options: O): import("./argument.js").Argument<number>;
|
|
5
|
+
<const O extends {
|
|
6
|
+
defaultValue?: undefined;
|
|
7
|
+
} & import("./argument.js").PerArgumentArgs>(options: O): import("./argument.js").Argument<number | undefined>;
|
|
8
|
+
};
|
|
9
|
+
export declare const numberArrayArgument: {
|
|
10
|
+
<const O extends {
|
|
11
|
+
defaultValue: number[];
|
|
12
|
+
} & import("./argument.js").PerArgumentArgs>(options: O): import("./argument.js").Argument<number[]>;
|
|
13
|
+
<const O extends {
|
|
14
|
+
defaultValue?: undefined;
|
|
15
|
+
} & import("./argument.js").PerArgumentArgs>(options: O): import("./argument.js").Argument<number[] | undefined>;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=numberArguments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberArguments.d.ts","sourceRoot":"","sources":["../../../src/arguments/numberArguments.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,cAAc;;;;;;;CAAwE,CAAA;AAEnG,eAAO,MAAM,mBAAmB;;;;;;;CAG/B,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.numberArrayArgument = exports.numberArgument = void 0;
|
|
4
|
+
const arrayValueArgument_js_1 = require("./arrayValueArgument.js");
|
|
5
|
+
const singleValueArgument_js_1 = require("./singleValueArgument.js");
|
|
6
|
+
function validateNumber(rawValue) {
|
|
7
|
+
const num = Number(rawValue);
|
|
8
|
+
if (isNaN(num)) {
|
|
9
|
+
return { valid: false, message: `expects a number but received ${rawValue}` };
|
|
10
|
+
}
|
|
11
|
+
return { valid: true, value: num };
|
|
12
|
+
}
|
|
13
|
+
exports.numberArgument = (0, singleValueArgument_js_1.singleValueArgument)(validateNumber, '. One number required.');
|
|
14
|
+
exports.numberArrayArgument = (0, arrayValueArgument_js_1.arrayValueArgument)(validateNumber, '. One or more numbers required.');
|
|
15
|
+
//# sourceMappingURL=numberArguments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberArguments.js","sourceRoot":"","sources":["../../../src/arguments/numberArguments.ts"],"names":[],"mappings":";;;AACA,mEAA4D;AAC5D,qEAA8D;AAE9D,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,iCAAiC,QAAQ,EAAE,EAAE,CAAA;IAC/E,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AACpC,CAAC;AAEY,QAAA,cAAc,GAAG,IAAA,4CAAmB,EAAS,cAAc,EAAE,wBAAwB,CAAC,CAAA;AAEtF,QAAA,mBAAmB,GAAG,IAAA,0CAAkB,EACnD,cAAc,EACd,iCAAiC,CAClC,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Argument, PerArgumentArgs, ValidatedValues } from './argument.js';
|
|
2
|
+
type SingleValueValidator<ValueType> = (rawValue: string) => Promise<ValidatedValues<ValueType>> | ValidatedValues<ValueType>;
|
|
3
|
+
/**
|
|
4
|
+
* Creates a single value argument factory for a specific type
|
|
5
|
+
*/
|
|
6
|
+
export declare function singleValueArgument<ValueType>(validator: SingleValueValidator<ValueType>, descriptionSuffix?: string): {
|
|
7
|
+
<const O extends {
|
|
8
|
+
defaultValue: ValueType;
|
|
9
|
+
} & PerArgumentArgs>(options: O): Argument<ValueType>;
|
|
10
|
+
<const O extends {
|
|
11
|
+
defaultValue?: undefined;
|
|
12
|
+
} & PerArgumentArgs>(options: O): Argument<ValueType | undefined>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=singleValueArgument.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singleValueArgument.d.ts","sourceRoot":"","sources":["../../../src/arguments/singleValueArgument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE1E,KAAK,oBAAoB,CAAC,SAAS,IAAI,CACrC,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;AAErE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAC3C,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAC1C,iBAAiB,GAAE,MAAW;WAEA,CAAC,SAAS;QAAE,YAAY,EAAE,SAAS,CAAA;KAAE,GAAG,eAAe,WAC1E,CAAC,GACT,QAAQ,CAAC,SAAS,CAAC;WACQ,CAAC,SAAS;QAAE,YAAY,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,eAAe,WAC3E,CAAC,GACT,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;EAkCnC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.singleValueArgument = singleValueArgument;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a single value argument factory for a specific type
|
|
6
|
+
*/
|
|
7
|
+
function singleValueArgument(validator, descriptionSuffix = '') {
|
|
8
|
+
function createArgument(options) {
|
|
9
|
+
return {
|
|
10
|
+
description: options.description + descriptionSuffix,
|
|
11
|
+
validateValues: async (currentValue, values) => {
|
|
12
|
+
if (currentValue !== undefined && currentValue != options.defaultValue) {
|
|
13
|
+
return {
|
|
14
|
+
valid: false,
|
|
15
|
+
message: 'expects a single values but was set multiple times'
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if (values.length == 0) {
|
|
19
|
+
return { valid: false, message: 'a value is required' };
|
|
20
|
+
}
|
|
21
|
+
if (values.length > 1) {
|
|
22
|
+
return {
|
|
23
|
+
valid: false,
|
|
24
|
+
message: 'expects a single value but received ' + values.join(', ')
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return validator(values[0]);
|
|
28
|
+
},
|
|
29
|
+
reduceValues: async (current, newValue) => newValue,
|
|
30
|
+
defaultValue: options.defaultValue
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return createArgument;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=singleValueArgument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singleValueArgument.js","sourceRoot":"","sources":["../../../src/arguments/singleValueArgument.ts"],"names":[],"mappings":";;AASA,kDA2CC;AA9CD;;GAEG;AACH,SAAgB,mBAAmB,CACjC,SAA0C,EAC1C,oBAA4B,EAAE;IAQ9B,SAAS,cAAc,CAErB,OAAU;QACV,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,GAAG,iBAAiB;YACpD,cAAc,EAAE,KAAK,EACnB,YAAmC,EACnC,MAAgB,EACqB,EAAE;gBACvC,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;oBACvE,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,OAAO,EAAE,oDAAoD;qBAC9D,CAAA;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAA;gBACzD,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,OAAO,EAAE,sCAAsC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;qBACpE,CAAA;gBACH,CAAC;gBAED,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7B,CAAC;YACD,YAAY,EAAE,KAAK,EAAE,OAA8B,EAAE,QAAmB,EAAE,EAAE,CAAC,QAAQ;YACrF,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAA;IACH,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const stringArgument: {
|
|
2
|
+
<const O extends {
|
|
3
|
+
defaultValue: string;
|
|
4
|
+
} & import("./argument.js").PerArgumentArgs>(options: O): import("./argument.js").Argument<string>;
|
|
5
|
+
<const O extends {
|
|
6
|
+
defaultValue?: undefined;
|
|
7
|
+
} & import("./argument.js").PerArgumentArgs>(options: O): import("./argument.js").Argument<string | undefined>;
|
|
8
|
+
};
|
|
9
|
+
export declare const stringArrayArgument: {
|
|
10
|
+
<const O extends {
|
|
11
|
+
defaultValue: string[];
|
|
12
|
+
} & import("./argument.js").PerArgumentArgs>(options: O): import("./argument.js").Argument<string[]>;
|
|
13
|
+
<const O extends {
|
|
14
|
+
defaultValue?: undefined;
|
|
15
|
+
} & import("./argument.js").PerArgumentArgs>(options: O): import("./argument.js").Argument<string[] | undefined>;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=stringArguments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringArguments.d.ts","sourceRoot":"","sources":["../../../src/arguments/stringArguments.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;;;;;;CAM1B,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;CAM/B,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stringArrayArgument = exports.stringArgument = void 0;
|
|
4
|
+
const arrayValueArgument_js_1 = require("./arrayValueArgument.js");
|
|
5
|
+
const singleValueArgument_js_1 = require("./singleValueArgument.js");
|
|
6
|
+
exports.stringArgument = (0, singleValueArgument_js_1.singleValueArgument)((rawValue) => ({
|
|
7
|
+
valid: true,
|
|
8
|
+
value: rawValue
|
|
9
|
+
}), '. One string required.');
|
|
10
|
+
exports.stringArrayArgument = (0, arrayValueArgument_js_1.arrayValueArgument)((rawValue) => ({
|
|
11
|
+
valid: true,
|
|
12
|
+
value: rawValue
|
|
13
|
+
}), '. One or more strings required.');
|
|
14
|
+
//# sourceMappingURL=stringArguments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringArguments.js","sourceRoot":"","sources":["../../../src/arguments/stringArguments.ts"],"names":[],"mappings":";;;AAAA,mEAA4D;AAC5D,qEAA8D;AAEjD,QAAA,cAAc,GAAG,IAAA,4CAAmB,EAC/C,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,QAAQ;CAChB,CAAC,EACF,wBAAwB,CACzB,CAAA;AAEY,QAAA,mBAAmB,GAAG,IAAA,0CAAkB,EACnD,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,QAAQ;CAChB,CAAC,EACF,iCAAiC,CAClC,CAAA"}
|
package/dist/cjs/cli.d.ts
CHANGED
|
@@ -1,97 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export type BooleanArgument = {
|
|
5
|
-
/**
|
|
6
|
-
* The single character flag for the argument.
|
|
7
|
-
*/
|
|
8
|
-
character: string;
|
|
9
|
-
/**
|
|
10
|
-
* The type of the argument.
|
|
11
|
-
*/
|
|
12
|
-
type: 'boolean';
|
|
13
|
-
/**
|
|
14
|
-
* The description of the argument.
|
|
15
|
-
*/
|
|
16
|
-
description: string;
|
|
1
|
+
import { Argument } from './arguments/argument.js';
|
|
2
|
+
type ParsedArguments<T extends Record<string, Argument<any>>> = {
|
|
3
|
+
[K in keyof T as K]: T[K] extends Argument<infer V> ? V : never;
|
|
17
4
|
};
|
|
18
5
|
/**
|
|
19
|
-
* A
|
|
6
|
+
* A subcommand that can be used in the CLI.
|
|
20
7
|
*/
|
|
21
|
-
export type StandardArgument = {
|
|
22
|
-
/**
|
|
23
|
-
* Whether the argument accepts single or multiple values.
|
|
24
|
-
*/
|
|
25
|
-
values: 'single' | 'multiple';
|
|
26
|
-
/**
|
|
27
|
-
* The type of the values accepted.
|
|
28
|
-
*/
|
|
29
|
-
type: 'string' | 'number';
|
|
30
|
-
/**
|
|
31
|
-
* The description of the argument.
|
|
32
|
-
*/
|
|
33
|
-
description: string;
|
|
34
|
-
};
|
|
35
|
-
export type EnumArgument<ValidValues extends readonly string[]> = {
|
|
36
|
-
/**
|
|
37
|
-
* Whether the argument accepts single or multiple values.
|
|
38
|
-
*/
|
|
39
|
-
values: 'single' | 'multiple';
|
|
40
|
-
/**
|
|
41
|
-
* Must be 'enum' for an enum argument.
|
|
42
|
-
*/
|
|
43
|
-
type: 'enum';
|
|
44
|
-
/**
|
|
45
|
-
* The valid values for the argument.
|
|
46
|
-
*/
|
|
47
|
-
validValues: ValidValues;
|
|
48
|
-
/**
|
|
49
|
-
* The description of the argument.
|
|
50
|
-
*/
|
|
51
|
-
description: string;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* A CLI argument that can be accepted for a command.
|
|
55
|
-
*/
|
|
56
|
-
export type CliArgument = BooleanArgument | StandardArgument | EnumArgument<readonly string[]>;
|
|
57
8
|
export type Subcommand = {
|
|
58
9
|
description: string;
|
|
59
|
-
|
|
60
|
-
};
|
|
61
|
-
export type OptionConfig = {
|
|
62
|
-
type: 'string' | 'number' | 'boolean';
|
|
63
|
-
values: 'single' | 'multiple';
|
|
64
|
-
description: string;
|
|
65
|
-
character?: string;
|
|
10
|
+
arguments: Record<string, Argument<any>>;
|
|
66
11
|
};
|
|
67
12
|
/**
|
|
68
13
|
* A map of CLI argument keys to their configuration.
|
|
69
14
|
*/
|
|
70
|
-
export type Config<T extends Record<string,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
* @param config the configuration for the CLI arguments.
|
|
75
|
-
* @returns the configuration object.
|
|
76
|
-
*/
|
|
77
|
-
export declare function createConfig<T extends Record<string, CliArgument>>(config: T): T;
|
|
78
|
-
type ParsedArgs<T extends Record<string, CliArgument>> = {
|
|
79
|
-
[K in keyof T as K]: T[K] extends {
|
|
80
|
-
type: 'string';
|
|
81
|
-
} ? T[K]['values'] extends 'single' ? string | undefined : string[] : T[K] extends {
|
|
82
|
-
type: 'number';
|
|
83
|
-
} ? T[K]['values'] extends 'single' ? number | undefined : number[] : T[K] extends {
|
|
84
|
-
type: 'boolean';
|
|
85
|
-
} ? boolean : T[K] extends EnumArgument<readonly string[]> ? T[K]['values'] extends 'single' ? T[K]['validValues'][number] | undefined : T[K]['validValues'][number][] : never;
|
|
86
|
-
};
|
|
15
|
+
export type Config<T extends Record<string, Argument<any>>> = T;
|
|
16
|
+
interface ConsoleLogger {
|
|
17
|
+
log: (...args: any[]) => void;
|
|
18
|
+
}
|
|
87
19
|
/**
|
|
88
20
|
* Additional arguments that can be used to configure the CLI parser.
|
|
89
21
|
*/
|
|
90
|
-
export interface
|
|
22
|
+
export interface AdditionalCliOptions {
|
|
91
23
|
/**
|
|
92
24
|
* The version of the CLI command. If provided, the CLI provides a --version flag that prints the version and exits.
|
|
93
|
-
|
|
94
|
-
|
|
25
|
+
*
|
|
26
|
+
* If a string is provided, it is printed as-is.
|
|
27
|
+
* If an object it can have the following properties:
|
|
28
|
+
* - currentVersion: the current version of the CLI. This can be a string or a function that returns a Promise<string> or string.
|
|
29
|
+
* - checkForUpdates: Can be:
|
|
30
|
+
* - a string name of the npm package to check for updates
|
|
31
|
+
* - a function that returns a Promise<string | null> that returns the latest version or null if no update is available.
|
|
32
|
+
* - updateMessage: a function that takes the current version and latest version and returns a string message to display when an update is available.
|
|
33
|
+
*/
|
|
34
|
+
version?: string | {
|
|
35
|
+
currentVersion: string | (() => Promise<string> | string);
|
|
36
|
+
checkForUpdates?: string | (() => Promise<string | null>);
|
|
37
|
+
updateMessage?: (current: string, latest: string) => string;
|
|
38
|
+
};
|
|
95
39
|
/**
|
|
96
40
|
* The argument string from the CLI. If not provided, the process.argv.slice(2) is used.
|
|
97
41
|
*/
|
|
@@ -128,10 +72,14 @@ export interface AdditionalCliArguments {
|
|
|
128
72
|
* Defaults to false
|
|
129
73
|
*/
|
|
130
74
|
allowOperandsFromStdin?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* A logger to use for printing help messages. If not provided, console.log is used.
|
|
77
|
+
*/
|
|
78
|
+
consoleLogger?: ConsoleLogger;
|
|
131
79
|
}
|
|
132
|
-
export type SelectedSubcommandWithArgs<C extends Record<string, Subcommand>, O extends Record<string,
|
|
80
|
+
export type SelectedSubcommandWithArgs<C extends Record<string, Subcommand>, O extends Record<string, Argument<any>>, A extends AdditionalCliOptions> = keyof C extends never ? {
|
|
133
81
|
subcommand: never;
|
|
134
|
-
args:
|
|
82
|
+
args: ParsedArguments<O>;
|
|
135
83
|
operands: string[];
|
|
136
84
|
anyValues: boolean;
|
|
137
85
|
printHelp: () => void;
|
|
@@ -140,21 +88,21 @@ export type SelectedSubcommandWithArgs<C extends Record<string, Subcommand>, O e
|
|
|
140
88
|
} ? {
|
|
141
89
|
[K in keyof C]: {
|
|
142
90
|
subcommand: K;
|
|
143
|
-
args:
|
|
91
|
+
args: ParsedArguments<C[K]['arguments']> & ParsedArguments<O>;
|
|
144
92
|
operands: string[];
|
|
145
93
|
anyValues: boolean;
|
|
146
94
|
printHelp: () => void;
|
|
147
95
|
};
|
|
148
96
|
}[keyof C] : {
|
|
149
97
|
subcommand: undefined;
|
|
150
|
-
args:
|
|
98
|
+
args: ParsedArguments<O>;
|
|
151
99
|
operands: string[];
|
|
152
100
|
anyValues: boolean;
|
|
153
101
|
printHelp: () => void;
|
|
154
102
|
} | {
|
|
155
103
|
[K in keyof C]: {
|
|
156
104
|
subcommand: K;
|
|
157
|
-
args:
|
|
105
|
+
args: ParsedArguments<C[K]['arguments']> & ParsedArguments<O>;
|
|
158
106
|
operands: string[];
|
|
159
107
|
anyValues: boolean;
|
|
160
108
|
printHelp: () => void;
|
|
@@ -168,11 +116,11 @@ type Only<A, B> = {
|
|
|
168
116
|
*
|
|
169
117
|
* @param command the name of the command arguments are being parsed for.
|
|
170
118
|
* @param subcommands the list of subcommands that can be used, if any.
|
|
171
|
-
* @param
|
|
172
|
-
* @param
|
|
119
|
+
* @param cliArgs the configuration options for the CLI command.
|
|
120
|
+
* @param additionalOptions additional arguments to be used for parsing and displaying help.
|
|
173
121
|
* @returns the parsed arguments, operands, and subcommand if applicable.
|
|
174
122
|
*/
|
|
175
|
-
export declare function parseCliArguments<const O extends Record<string,
|
|
176
|
-
export declare function printHelpContents<O extends Record<string,
|
|
123
|
+
export declare function parseCliArguments<const O extends Record<string, Argument<any>>, const C extends Record<string, Subcommand>, const A extends AdditionalCliOptions>(command: string, subcommands: C, cliArgs: Config<O>, additionalOptions?: Only<A, AdditionalCliOptions>): Promise<SelectedSubcommandWithArgs<C, O, A>>;
|
|
124
|
+
export declare function printHelpContents<O extends Record<string, Argument<any>>, C extends Record<string, Subcommand>>(command: string, subcommands: C, cliOptions: O, additionalArgs?: AdditionalCliOptions, selectedSubcommand?: string | undefined): void;
|
|
177
125
|
export {};
|
|
178
126
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cjs/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|