@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.
Files changed (98) hide show
  1. package/README.md +86 -207
  2. package/dist/cjs/arguments/argument.d.ts +60 -0
  3. package/dist/cjs/arguments/argument.d.ts.map +1 -0
  4. package/dist/cjs/arguments/argument.js +3 -0
  5. package/dist/cjs/arguments/argument.js.map +1 -0
  6. package/dist/cjs/arguments/arrayValueArgument.d.ts +15 -0
  7. package/dist/cjs/arguments/arrayValueArgument.d.ts.map +1 -0
  8. package/dist/cjs/arguments/arrayValueArgument.js +38 -0
  9. package/dist/cjs/arguments/arrayValueArgument.js.map +1 -0
  10. package/dist/cjs/arguments/booleanArgument.d.ts +11 -0
  11. package/dist/cjs/arguments/booleanArgument.d.ts.map +1 -0
  12. package/dist/cjs/arguments/booleanArgument.js +25 -0
  13. package/dist/cjs/arguments/booleanArgument.js.map +1 -0
  14. package/dist/cjs/arguments/enumArgument.d.ts +15 -0
  15. package/dist/cjs/arguments/enumArgument.d.ts.map +1 -0
  16. package/dist/cjs/arguments/enumArgument.js +35 -0
  17. package/dist/cjs/arguments/enumArgument.js.map +1 -0
  18. package/dist/cjs/arguments/enumArrayArgument.d.ts +15 -0
  19. package/dist/cjs/arguments/enumArrayArgument.d.ts.map +1 -0
  20. package/dist/cjs/arguments/enumArrayArgument.js +42 -0
  21. package/dist/cjs/arguments/enumArrayArgument.js.map +1 -0
  22. package/dist/cjs/arguments/mapArgument.d.ts +18 -0
  23. package/dist/cjs/arguments/mapArgument.d.ts.map +1 -0
  24. package/dist/cjs/arguments/mapArgument.js +35 -0
  25. package/dist/cjs/arguments/mapArgument.js.map +1 -0
  26. package/dist/cjs/arguments/numberArguments.d.ts +17 -0
  27. package/dist/cjs/arguments/numberArguments.d.ts.map +1 -0
  28. package/dist/cjs/arguments/numberArguments.js +15 -0
  29. package/dist/cjs/arguments/numberArguments.js.map +1 -0
  30. package/dist/cjs/arguments/singleValueArgument.d.ts +15 -0
  31. package/dist/cjs/arguments/singleValueArgument.d.ts.map +1 -0
  32. package/dist/cjs/arguments/singleValueArgument.js +35 -0
  33. package/dist/cjs/arguments/singleValueArgument.js.map +1 -0
  34. package/dist/cjs/arguments/stringArguments.d.ts +17 -0
  35. package/dist/cjs/arguments/stringArguments.d.ts.map +1 -0
  36. package/dist/cjs/arguments/stringArguments.js +14 -0
  37. package/dist/cjs/arguments/stringArguments.js.map +1 -0
  38. package/dist/cjs/cli.d.ts +37 -89
  39. package/dist/cjs/cli.d.ts.map +1 -1
  40. package/dist/cjs/cli.js +171 -293
  41. package/dist/cjs/cli.js.map +1 -1
  42. package/dist/cjs/index.d.ts +11 -2
  43. package/dist/cjs/index.d.ts.map +1 -1
  44. package/dist/cjs/index.js +20 -3
  45. package/dist/cjs/index.js.map +1 -1
  46. package/dist/cjs/readRelative.d.ts +25 -7
  47. package/dist/cjs/readRelative.d.ts.map +1 -1
  48. package/dist/cjs/readRelative.js +63 -20
  49. package/dist/cjs/readRelative.js.map +1 -1
  50. package/dist/esm/arguments/argument.d.ts +60 -0
  51. package/dist/esm/arguments/argument.d.ts.map +1 -0
  52. package/dist/esm/arguments/argument.js +2 -0
  53. package/dist/esm/arguments/argument.js.map +1 -0
  54. package/dist/esm/arguments/arrayValueArgument.d.ts +15 -0
  55. package/dist/esm/arguments/arrayValueArgument.d.ts.map +1 -0
  56. package/dist/esm/arguments/arrayValueArgument.js +35 -0
  57. package/dist/esm/arguments/arrayValueArgument.js.map +1 -0
  58. package/dist/esm/arguments/booleanArgument.d.ts +11 -0
  59. package/dist/esm/arguments/booleanArgument.d.ts.map +1 -0
  60. package/dist/esm/arguments/booleanArgument.js +22 -0
  61. package/dist/esm/arguments/booleanArgument.js.map +1 -0
  62. package/dist/esm/arguments/enumArgument.d.ts +15 -0
  63. package/dist/esm/arguments/enumArgument.d.ts.map +1 -0
  64. package/dist/esm/arguments/enumArgument.js +32 -0
  65. package/dist/esm/arguments/enumArgument.js.map +1 -0
  66. package/dist/esm/arguments/enumArrayArgument.d.ts +15 -0
  67. package/dist/esm/arguments/enumArrayArgument.d.ts.map +1 -0
  68. package/dist/esm/arguments/enumArrayArgument.js +39 -0
  69. package/dist/esm/arguments/enumArrayArgument.js.map +1 -0
  70. package/dist/esm/arguments/mapArgument.d.ts +18 -0
  71. package/dist/esm/arguments/mapArgument.d.ts.map +1 -0
  72. package/dist/esm/arguments/mapArgument.js +32 -0
  73. package/dist/esm/arguments/mapArgument.js.map +1 -0
  74. package/dist/esm/arguments/numberArguments.d.ts +17 -0
  75. package/dist/esm/arguments/numberArguments.d.ts.map +1 -0
  76. package/dist/esm/arguments/numberArguments.js +12 -0
  77. package/dist/esm/arguments/numberArguments.js.map +1 -0
  78. package/dist/esm/arguments/singleValueArgument.d.ts +15 -0
  79. package/dist/esm/arguments/singleValueArgument.d.ts.map +1 -0
  80. package/dist/esm/arguments/singleValueArgument.js +32 -0
  81. package/dist/esm/arguments/singleValueArgument.js.map +1 -0
  82. package/dist/esm/arguments/stringArguments.d.ts +17 -0
  83. package/dist/esm/arguments/stringArguments.d.ts.map +1 -0
  84. package/dist/esm/arguments/stringArguments.js +11 -0
  85. package/dist/esm/arguments/stringArguments.js.map +1 -0
  86. package/dist/esm/cli.d.ts +37 -89
  87. package/dist/esm/cli.d.ts.map +1 -1
  88. package/dist/esm/cli.js +171 -292
  89. package/dist/esm/cli.js.map +1 -1
  90. package/dist/esm/index.d.ts +11 -2
  91. package/dist/esm/index.d.ts.map +1 -1
  92. package/dist/esm/index.js +10 -2
  93. package/dist/esm/index.js.map +1 -1
  94. package/dist/esm/readRelative.d.ts +25 -7
  95. package/dist/esm/readRelative.d.ts.map +1 -1
  96. package/dist/esm/readRelative.js +58 -19
  97. package/dist/esm/readRelative.js.map +1 -1
  98. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enumArrayArgument.js","sourceRoot":"","sources":["../../../src/arguments/enumArrayArgument.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,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,32 @@
1
+ export function mapArgument(options) {
2
+ return {
3
+ description: options.description + `. Each instance requires a key and at least one value.`,
4
+ validateValues: async (currentValue, values) => {
5
+ const [first, ...rest] = values;
6
+ if (!first) {
7
+ return { valid: false, message: 'a key is required and at least one value is required' };
8
+ }
9
+ if (rest.length < 1) {
10
+ return { valid: false, message: `${first} requires at least one value` };
11
+ }
12
+ if (currentValue && first in currentValue) {
13
+ return { valid: false, message: `${first} is set multiple times` };
14
+ }
15
+ return {
16
+ valid: true,
17
+ value: {
18
+ [first]: rest
19
+ }
20
+ };
21
+ },
22
+ reduceValues: async (current, newValue) => {
23
+ if (!current) {
24
+ return { ...newValue };
25
+ }
26
+ return { ...current, ...newValue };
27
+ },
28
+ defaultValue: options.defaultValue,
29
+ acceptMultipleValues: () => true
30
+ };
31
+ }
32
+ //# sourceMappingURL=mapArgument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapArgument.js","sourceRoot":"","sources":["../../../src/arguments/mapArgument.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,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,12 @@
1
+ import { arrayValueArgument } from './arrayValueArgument.js';
2
+ import { singleValueArgument } from './singleValueArgument.js';
3
+ function validateNumber(rawValue) {
4
+ const num = Number(rawValue);
5
+ if (isNaN(num)) {
6
+ return { valid: false, message: `expects a number but received ${rawValue}` };
7
+ }
8
+ return { valid: true, value: num };
9
+ }
10
+ export const numberArgument = singleValueArgument(validateNumber, '. One number required.');
11
+ export const numberArrayArgument = arrayValueArgument(validateNumber, '. One or more numbers required.');
12
+ //# sourceMappingURL=numberArguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numberArguments.js","sourceRoot":"","sources":["../../../src/arguments/numberArguments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;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;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAS,cAAc,EAAE,wBAAwB,CAAC,CAAA;AAEnG,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CACnD,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,32 @@
1
+ /**
2
+ * Creates a single value argument factory for a specific type
3
+ */
4
+ export function singleValueArgument(validator, descriptionSuffix = '') {
5
+ function createArgument(options) {
6
+ return {
7
+ description: options.description + descriptionSuffix,
8
+ validateValues: async (currentValue, values) => {
9
+ if (currentValue !== undefined && currentValue != options.defaultValue) {
10
+ return {
11
+ valid: false,
12
+ message: 'expects a single values but was set multiple times'
13
+ };
14
+ }
15
+ if (values.length == 0) {
16
+ return { valid: false, message: 'a value is required' };
17
+ }
18
+ if (values.length > 1) {
19
+ return {
20
+ valid: false,
21
+ message: 'expects a single value but received ' + values.join(', ')
22
+ };
23
+ }
24
+ return validator(values[0]);
25
+ },
26
+ reduceValues: async (current, newValue) => newValue,
27
+ defaultValue: options.defaultValue
28
+ };
29
+ }
30
+ return createArgument;
31
+ }
32
+ //# sourceMappingURL=singleValueArgument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleValueArgument.js","sourceRoot":"","sources":["../../../src/arguments/singleValueArgument.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,UAAU,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,11 @@
1
+ import { arrayValueArgument } from './arrayValueArgument.js';
2
+ import { singleValueArgument } from './singleValueArgument.js';
3
+ export const stringArgument = singleValueArgument((rawValue) => ({
4
+ valid: true,
5
+ value: rawValue
6
+ }), '. One string required.');
7
+ export const stringArrayArgument = arrayValueArgument((rawValue) => ({
8
+ valid: true,
9
+ value: rawValue
10
+ }), '. One or more strings required.');
11
+ //# sourceMappingURL=stringArguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringArguments.js","sourceRoot":"","sources":["../../../src/arguments/stringArguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAC/C,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,QAAQ;CAChB,CAAC,EACF,wBAAwB,CACzB,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CACnD,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,QAAQ;CAChB,CAAC,EACF,iCAAiC,CAClC,CAAA"}
package/dist/esm/cli.d.ts CHANGED
@@ -1,97 +1,41 @@
1
- /**
2
- * A boolean argument that has no values.
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 standard argument that has one or more values.
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
- options: Record<string, CliArgument>;
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, CliArgument>> = T;
71
- /**
72
- * Create a type safe configuration for CLI arguments.
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 AdditionalCliArguments {
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
- version?: string;
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, CliArgument>, A extends AdditionalCliArguments> = keyof C extends never ? {
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: ParsedArgs<O>;
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: ParsedArgs<C[K]['options']> & ParsedArgs<O>;
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: ParsedArgs<O>;
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: ParsedArgs<C[K]['options']> & ParsedArgs<O>;
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 cliOptions the configuration options for the CLI command.
172
- * @param additionalArgs additional arguments to be used for parsing and displaying help.
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, CliArgument>, const C extends Record<string, Subcommand>, const A extends AdditionalCliArguments>(command: string, subcommands: C, cliOptions: Config<O>, additionalArgs?: Only<A, AdditionalCliArguments>): SelectedSubcommandWithArgs<C, O, A>;
176
- export declare function printHelpContents<O extends Record<string, CliArgument>, C extends Record<string, Subcommand>>(command: string, subcommands: C, cliOptions: O, additionalArgs?: AdditionalCliArguments, selectedSubcommand?: string | undefined): void;
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
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAGlD,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAChE,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;AAS/D,UAAU,aAAa;IACrB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;;;OAUG;IAEH,OAAO,CAAC,EACJ,MAAM,GACN;QACE,cAAc,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;QACzD,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;QACzD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;KAC5D,CAAA;IAEL;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IAEf;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAEhC;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED,MAAM,MAAM,0BAA0B,CACpC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EACvC,CAAC,SAAS,oBAAoB,IAC5B,MAAM,CAAC,SAAS,KAAK,GACrB;IACE,UAAU,EAAE,KAAK,CAAA;IACjB,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB,GACD,CAAC,SAAS;IAAE,iBAAiB,EAAE,IAAI,CAAA;CAAE,GACnC;KACG,CAAC,IAAI,MAAM,CAAC,GAAG;QACd,UAAU,EAAE,CAAC,CAAA;QACb,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QAC7D,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,SAAS,EAAE,OAAO,CAAA;QAClB,SAAS,EAAE,MAAM,IAAI,CAAA;KACtB;CACF,CAAC,MAAM,CAAC,CAAC,GAEN;IACE,UAAU,EAAE,SAAS,CAAA;IACrB,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB,GACD;KACG,CAAC,IAAI,MAAM,CAAC,GAAG;QACd,UAAU,EAAE,CAAC,CAAA;QACb,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QAC7D,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,SAAS,EAAE,OAAO,CAAA;QAClB,SAAS,EAAE,MAAM,IAAI,CAAA;KACtB;CACF,CAAC,MAAM,CAAC,CAAC,CAAA;AAEpB,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI;KACf,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CACjD,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAEd;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC7C,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAC1C,KAAK,CAAC,CAAC,SAAS,oBAAoB,EAEpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,CAAC,EACd,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAClB,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,oBAAoB,CAAC,GAChD,OAAO,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAsM9C;AAsID,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAEpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,CAAC,EACd,UAAU,EAAE,CAAC,EACb,cAAc,CAAC,EAAE,oBAAoB,EACrC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,GACtC,IAAI,CA+EN"}