@actsecurity/cli 0.2.66

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 (117) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +143 -0
  3. package/dist/cjs/arguments/argument.d.ts +63 -0
  4. package/dist/cjs/arguments/argument.d.ts.map +1 -0
  5. package/dist/cjs/arguments/argument.js +3 -0
  6. package/dist/cjs/arguments/argument.js.map +1 -0
  7. package/dist/cjs/arguments/arrayValueArgument.d.ts +17 -0
  8. package/dist/cjs/arguments/arrayValueArgument.d.ts.map +1 -0
  9. package/dist/cjs/arguments/arrayValueArgument.js +38 -0
  10. package/dist/cjs/arguments/arrayValueArgument.js.map +1 -0
  11. package/dist/cjs/arguments/booleanArgument.d.ts +11 -0
  12. package/dist/cjs/arguments/booleanArgument.d.ts.map +1 -0
  13. package/dist/cjs/arguments/booleanArgument.js +25 -0
  14. package/dist/cjs/arguments/booleanArgument.js.map +1 -0
  15. package/dist/cjs/arguments/enumArgument.d.ts +20 -0
  16. package/dist/cjs/arguments/enumArgument.d.ts.map +1 -0
  17. package/dist/cjs/arguments/enumArgument.js +35 -0
  18. package/dist/cjs/arguments/enumArgument.js.map +1 -0
  19. package/dist/cjs/arguments/enumArrayArgument.d.ts +20 -0
  20. package/dist/cjs/arguments/enumArrayArgument.d.ts.map +1 -0
  21. package/dist/cjs/arguments/enumArrayArgument.js +43 -0
  22. package/dist/cjs/arguments/enumArrayArgument.js.map +1 -0
  23. package/dist/cjs/arguments/mapArgument.d.ts +20 -0
  24. package/dist/cjs/arguments/mapArgument.d.ts.map +1 -0
  25. package/dist/cjs/arguments/mapArgument.js +35 -0
  26. package/dist/cjs/arguments/mapArgument.js.map +1 -0
  27. package/dist/cjs/arguments/numberArguments.d.ts +17 -0
  28. package/dist/cjs/arguments/numberArguments.d.ts.map +1 -0
  29. package/dist/cjs/arguments/numberArguments.js +15 -0
  30. package/dist/cjs/arguments/numberArguments.js.map +1 -0
  31. package/dist/cjs/arguments/singleValueArgument.d.ts +17 -0
  32. package/dist/cjs/arguments/singleValueArgument.d.ts.map +1 -0
  33. package/dist/cjs/arguments/singleValueArgument.js +35 -0
  34. package/dist/cjs/arguments/singleValueArgument.js.map +1 -0
  35. package/dist/cjs/arguments/stringArguments.d.ts +17 -0
  36. package/dist/cjs/arguments/stringArguments.d.ts.map +1 -0
  37. package/dist/cjs/arguments/stringArguments.js +14 -0
  38. package/dist/cjs/arguments/stringArguments.js.map +1 -0
  39. package/dist/cjs/cli.d.ts +131 -0
  40. package/dist/cjs/cli.d.ts.map +1 -0
  41. package/dist/cjs/cli.js +499 -0
  42. package/dist/cjs/cli.js.map +1 -0
  43. package/dist/cjs/index.d.ts +13 -0
  44. package/dist/cjs/index.d.ts.map +1 -0
  45. package/dist/cjs/index.js +28 -0
  46. package/dist/cjs/index.js.map +1 -0
  47. package/dist/cjs/package.json +3 -0
  48. package/dist/cjs/readRelative.d.ts +35 -0
  49. package/dist/cjs/readRelative.d.ts.map +1 -0
  50. package/dist/cjs/readRelative.js +81 -0
  51. package/dist/cjs/readRelative.js.map +1 -0
  52. package/dist/cjs/stdin.d.ts +7 -0
  53. package/dist/cjs/stdin.d.ts.map +1 -0
  54. package/dist/cjs/stdin.js +38 -0
  55. package/dist/cjs/stdin.js.map +1 -0
  56. package/dist/cjs/utils.d.ts +14 -0
  57. package/dist/cjs/utils.d.ts.map +1 -0
  58. package/dist/cjs/utils.js +21 -0
  59. package/dist/cjs/utils.js.map +1 -0
  60. package/dist/esm/arguments/argument.d.ts +63 -0
  61. package/dist/esm/arguments/argument.d.ts.map +1 -0
  62. package/dist/esm/arguments/argument.js +2 -0
  63. package/dist/esm/arguments/argument.js.map +1 -0
  64. package/dist/esm/arguments/arrayValueArgument.d.ts +17 -0
  65. package/dist/esm/arguments/arrayValueArgument.d.ts.map +1 -0
  66. package/dist/esm/arguments/arrayValueArgument.js +36 -0
  67. package/dist/esm/arguments/arrayValueArgument.js.map +1 -0
  68. package/dist/esm/arguments/booleanArgument.d.ts +11 -0
  69. package/dist/esm/arguments/booleanArgument.d.ts.map +1 -0
  70. package/dist/esm/arguments/booleanArgument.js +23 -0
  71. package/dist/esm/arguments/booleanArgument.js.map +1 -0
  72. package/dist/esm/arguments/enumArgument.d.ts +20 -0
  73. package/dist/esm/arguments/enumArgument.d.ts.map +1 -0
  74. package/dist/esm/arguments/enumArgument.js +34 -0
  75. package/dist/esm/arguments/enumArgument.js.map +1 -0
  76. package/dist/esm/arguments/enumArrayArgument.d.ts +20 -0
  77. package/dist/esm/arguments/enumArrayArgument.d.ts.map +1 -0
  78. package/dist/esm/arguments/enumArrayArgument.js +42 -0
  79. package/dist/esm/arguments/enumArrayArgument.js.map +1 -0
  80. package/dist/esm/arguments/mapArgument.d.ts +20 -0
  81. package/dist/esm/arguments/mapArgument.d.ts.map +1 -0
  82. package/dist/esm/arguments/mapArgument.js +33 -0
  83. package/dist/esm/arguments/mapArgument.js.map +1 -0
  84. package/dist/esm/arguments/numberArguments.d.ts +17 -0
  85. package/dist/esm/arguments/numberArguments.d.ts.map +1 -0
  86. package/dist/esm/arguments/numberArguments.js +13 -0
  87. package/dist/esm/arguments/numberArguments.js.map +1 -0
  88. package/dist/esm/arguments/singleValueArgument.d.ts +17 -0
  89. package/dist/esm/arguments/singleValueArgument.d.ts.map +1 -0
  90. package/dist/esm/arguments/singleValueArgument.js +33 -0
  91. package/dist/esm/arguments/singleValueArgument.js.map +1 -0
  92. package/dist/esm/arguments/stringArguments.d.ts +17 -0
  93. package/dist/esm/arguments/stringArguments.d.ts.map +1 -0
  94. package/dist/esm/arguments/stringArguments.js +11 -0
  95. package/dist/esm/arguments/stringArguments.js.map +1 -0
  96. package/dist/esm/cli.d.ts +131 -0
  97. package/dist/esm/cli.d.ts.map +1 -0
  98. package/dist/esm/cli.js +494 -0
  99. package/dist/esm/cli.js.map +1 -0
  100. package/dist/esm/index.d.ts +13 -0
  101. package/dist/esm/index.d.ts.map +1 -0
  102. package/dist/esm/index.js +13 -0
  103. package/dist/esm/index.js.map +1 -0
  104. package/dist/esm/package.json +3 -0
  105. package/dist/esm/readRelative.d.ts +35 -0
  106. package/dist/esm/readRelative.d.ts.map +1 -0
  107. package/dist/esm/readRelative.js +74 -0
  108. package/dist/esm/readRelative.js.map +1 -0
  109. package/dist/esm/stdin.d.ts +7 -0
  110. package/dist/esm/stdin.d.ts.map +1 -0
  111. package/dist/esm/stdin.js +35 -0
  112. package/dist/esm/stdin.js.map +1 -0
  113. package/dist/esm/utils.d.ts +14 -0
  114. package/dist/esm/utils.d.ts.map +1 -0
  115. package/dist/esm/utils.js +18 -0
  116. package/dist/esm/utils.js.map +1 -0
  117. package/package.json +114 -0
@@ -0,0 +1,499 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCliArguments = parseCliArguments;
4
+ exports.camelToCapitalSnakeCase = camelToCapitalSnakeCase;
5
+ exports.camelToKebabCase = camelToKebabCase;
6
+ exports.printHelpContents = printHelpContents;
7
+ const utils_js_1 = require("./utils.js");
8
+ /**
9
+ * Parse CLI Arguments and return the parsed typesafe results.
10
+ *
11
+ * @param command the name of the command arguments are being parsed for.
12
+ * @param subcommands the list of subcommands that can be used, if any.
13
+ * @param cliArgs the configuration options for the CLI command.
14
+ * @param additionalOptions additional arguments to be used for parsing and displaying help.
15
+ * @returns the parsed arguments, operands, and subcommand if applicable.
16
+ */
17
+ async function parseCliArguments(command, subcommands, cliArgs, additionalOptions) {
18
+ const args = additionalOptions?.args ?? process.argv.slice(2);
19
+ const env = additionalOptions?.env ?? process.env;
20
+ const parsedArgs = {};
21
+ const operands = [];
22
+ const booleanOptions = {};
23
+ const subcommandKeys = Object.keys(subcommands);
24
+ const numberOfSubcommands = subcommandKeys.length;
25
+ const combinedOptions = { ...cliArgs };
26
+ const logger = additionalOptions?.consoleLogger ?? console;
27
+ let subcommand;
28
+ const expectOperands = Object.hasOwn(additionalOptions || {}, 'expectOperands')
29
+ ? !!additionalOptions?.expectOperands
30
+ : true;
31
+ if (args.length === 0 && additionalOptions?.showHelpIfNoArgs) {
32
+ printHelpContents(command, subcommands, cliArgs, additionalOptions);
33
+ (0, utils_js_1.exit)(0, undefined);
34
+ return {};
35
+ }
36
+ const allDefaults = {};
37
+ const isSetByCli = {};
38
+ // Step 1: Initialize defaults
39
+ const parsedEnvironmentArgs = {};
40
+ initializeOptionDefaults(allDefaults, booleanOptions, cliArgs);
41
+ // Step 2: Handle environment variables
42
+ await parseEnvironmentVariables(cliArgs, parsedEnvironmentArgs, env, additionalOptions?.envPrefix, isSetByCli);
43
+ // Step 3: Group arguments into objects
44
+ const commandChunks = groupArguments(args);
45
+ // Step 4: Validation and parsing arguments
46
+ for (const { first, rest, isLast, isFirst } of commandChunks) {
47
+ // Handle --help and --version
48
+ if (first === '--help') {
49
+ printHelpContents(command, subcommands, cliArgs, additionalOptions, subcommand);
50
+ (0, utils_js_1.exit)(0, undefined);
51
+ return {};
52
+ }
53
+ if (first === '--version') {
54
+ if (additionalOptions?.version) {
55
+ await printVersion(additionalOptions.version, logger);
56
+ (0, utils_js_1.exit)(0, undefined);
57
+ return {};
58
+ }
59
+ }
60
+ // Handle commands if applicable
61
+ if (isFirst && !first.startsWith('-')) {
62
+ if (numberOfSubcommands === 0) {
63
+ if (isLast) {
64
+ operands.push(first, ...rest);
65
+ }
66
+ else {
67
+ (0, utils_js_1.exit)(2, `Invalid: ${first}, all arguments must specified using a --argument`);
68
+ }
69
+ }
70
+ else {
71
+ if (!isLast && rest.length > 0) {
72
+ (0, utils_js_1.exit)(2, `Arguments must be specified using a --argument, ${rest.join(' ')} is ambiguous`);
73
+ }
74
+ const matchingCommands = subcommandKeys.filter((cmd) => cmd.toLowerCase().startsWith(first.toLowerCase()));
75
+ if (matchingCommands.length === 0) {
76
+ (0, utils_js_1.exit)(2, `Unknown command: ${first}`);
77
+ return {};
78
+ }
79
+ else if (matchingCommands.length > 1) {
80
+ (0, utils_js_1.exit)(2, `Ambiguous command: ${first}`);
81
+ return {};
82
+ }
83
+ subcommand = matchingCommands.at(0);
84
+ const subcommandOptions = subcommands[subcommand].arguments;
85
+ initializeOptionDefaults(allDefaults, booleanOptions, subcommandOptions);
86
+ await parseEnvironmentVariables(subcommandOptions, parsedEnvironmentArgs, env, additionalOptions?.envPrefix, isSetByCli);
87
+ for (const [key, option] of Object.entries(subcommandOptions)) {
88
+ combinedOptions[key] = option;
89
+ }
90
+ operands.push(...rest);
91
+ }
92
+ }
93
+ // Validate options
94
+ if (first == '--') {
95
+ if (!expectOperands) {
96
+ (0, utils_js_1.exit)(2, `Operands are not expected but '--' separator was used`);
97
+ }
98
+ operands.push(...rest);
99
+ }
100
+ else if (first.startsWith('--')) {
101
+ const key = first.slice(2).replaceAll('-', '').toLowerCase();
102
+ const matchingOptions = Object.keys(combinedOptions).filter((k) => k.toLowerCase().startsWith(key));
103
+ let matchingOption = undefined;
104
+ if (matchingOptions.length === 1) {
105
+ matchingOption = matchingOptions[0];
106
+ }
107
+ else if (matchingOptions.length > 1) {
108
+ //Look for an exact match, it's possible that one option name is the beginning of another
109
+ const exactMatch = matchingOptions.find((k) => k.toLowerCase() === key);
110
+ if (!exactMatch) {
111
+ (0, utils_js_1.exit)(2, `Ambiguous argument: ${first}`);
112
+ }
113
+ matchingOption = exactMatch;
114
+ }
115
+ else {
116
+ if ('--help'.startsWith(first)) {
117
+ printHelpContents(command, subcommands, cliArgs, additionalOptions, subcommand);
118
+ (0, utils_js_1.exit)(0, undefined);
119
+ return {};
120
+ }
121
+ else if ('--version'.startsWith(first) && additionalOptions?.version) {
122
+ await printVersion(additionalOptions.version, logger);
123
+ (0, utils_js_1.exit)(0, undefined);
124
+ return {};
125
+ }
126
+ (0, utils_js_1.exit)(2, `Unknown argument: ${first}`);
127
+ }
128
+ if (!matchingOption) {
129
+ (0, utils_js_1.exit)(2, `Unknown argument: ${first}`);
130
+ return {};
131
+ }
132
+ const selectedArgument = matchingOption;
133
+ const fullArgumentName = `--${camelToKebabCase(selectedArgument)}`;
134
+ const optionConfig = combinedOptions[selectedArgument];
135
+ initializeDefault(parsedArgs, combinedOptions, selectedArgument);
136
+ if (optionConfig.present) {
137
+ parsedArgs[selectedArgument] = await optionConfig.present(parsedArgs[selectedArgument]);
138
+ }
139
+ if (rest.length > 0 && optionConfig.character) {
140
+ if (!isLast) {
141
+ (0, utils_js_1.exit)(2, `Validation error for ${fullArgumentName}: does not accept values but received ${rest.join(', ')}`);
142
+ return {};
143
+ }
144
+ else {
145
+ // If we're at the last argument and there are values, check if operands are expected
146
+ if (!expectOperands) {
147
+ (0, utils_js_1.exit)(2, `Validation error for ${fullArgumentName}: does not accept values but received ${rest.join(', ')}`);
148
+ return {};
149
+ }
150
+ else {
151
+ operands.push(...rest);
152
+ }
153
+ }
154
+ }
155
+ else {
156
+ const acceptsMultiple = optionConfig.acceptMultipleValues
157
+ ? optionConfig.acceptMultipleValues()
158
+ : false;
159
+ let theRest = rest;
160
+ if (!acceptsMultiple && rest.length > 1) {
161
+ if (isLast && expectOperands) {
162
+ theRest = [rest[0]];
163
+ operands.push(...rest.slice(1));
164
+ }
165
+ }
166
+ const currentValue = parsedArgs[selectedArgument];
167
+ const validation = await optionConfig.validateValues(currentValue, theRest, isSetByCli[selectedArgument] === undefined);
168
+ if (!validation.valid) {
169
+ (0, utils_js_1.exit)(2, `Validation error for ${fullArgumentName}: ${validation.message}`);
170
+ return {};
171
+ }
172
+ else {
173
+ parsedArgs[selectedArgument] = await optionConfig.reduceValues(currentValue, validation.value, isSetByCli[selectedArgument] === undefined);
174
+ isSetByCli[selectedArgument] = true;
175
+ }
176
+ }
177
+ }
178
+ else if (first.startsWith('-')) {
179
+ if (rest.length > 0 && !isLast) {
180
+ (0, utils_js_1.exit)(2, `Boolean flag(s) ${first} should not have values but received ${rest.join(', ')}`);
181
+ return {};
182
+ }
183
+ else if (isLast && rest.length > 0) {
184
+ // If we're at the last argument and there are values, check if operands are expected
185
+ if (!expectOperands) {
186
+ (0, utils_js_1.exit)(2, `Boolean flag(s) ${first} should not have values but received ${rest.join(', ')}`);
187
+ return {};
188
+ }
189
+ else {
190
+ operands.push(...rest);
191
+ }
192
+ }
193
+ // Short options (-s, -spq)
194
+ for (const char of first.slice(1)) {
195
+ if (!(char in booleanOptions)) {
196
+ (0, utils_js_1.exit)(2, `Unknown flag: -${char}`);
197
+ }
198
+ const key = booleanOptions[char];
199
+ parsedArgs[key] = true;
200
+ }
201
+ }
202
+ }
203
+ if (numberOfSubcommands > 0 && additionalOptions?.requireSubcommand && !subcommand) {
204
+ (0, utils_js_1.exit)(2, `A subcommand is required`);
205
+ }
206
+ // Step 5: Validate operands if expectOperands is false
207
+ if (!expectOperands && operands.length > 0) {
208
+ (0, utils_js_1.exit)(2, `Operands are not expected but received: ${operands.join(', ')}`);
209
+ }
210
+ // Step 4: Return results
211
+ return {
212
+ args: { ...allDefaults, ...parsedEnvironmentArgs, ...parsedArgs },
213
+ operands: expectOperands ? operands : [],
214
+ subcommand: subcommand,
215
+ anyValues: args.length > 0,
216
+ printHelp: () => {
217
+ printHelpContents(command, subcommands, cliArgs, additionalOptions, subcommand);
218
+ }
219
+ };
220
+ }
221
+ /**
222
+ * Initialize the default values for arguments.
223
+ *
224
+ * Will populate the parsedArgs object with default values from the cliArguments.
225
+ * Will also populate the booleanOptions map with single character boolean options.
226
+ *
227
+ * @param parsedArgs the parsed arguments to default the values in
228
+ * @param booleanOptions a map of single character boolean options to their full names
229
+ * @param cliArguments the configuration options for the CLI commands
230
+ */
231
+ function initializeOptionDefaults(parsedArgs, booleanOptions, cliArguments) {
232
+ for (const [key, option] of Object.entries(cliArguments)) {
233
+ parsedArgs[key] = option.defaultValue;
234
+ if (option.character) {
235
+ booleanOptions[option.character.toLowerCase()] = key;
236
+ }
237
+ }
238
+ }
239
+ /**
240
+ * Initialize the default value for a specific argument if it is not already set.
241
+ *
242
+ * If the argument is not already present in parsedArgs, it will be set to the default value from cliArguments.
243
+ *
244
+ * @param parsedArgs the parsed arguments so far.
245
+ * @param cliArguments the CLI arguments configuration
246
+ * @param key the specific argument key to initialize
247
+ */
248
+ function initializeDefault(parsedArgs, cliArguments, key) {
249
+ if (!Object.hasOwn(parsedArgs, key)) {
250
+ parsedArgs[key] = cliArguments[key].defaultValue;
251
+ }
252
+ }
253
+ /**
254
+ * Parse environment variables and set the values in the parsed arguments.
255
+ *
256
+ * @param cliArguments the configuration options for the CLI commands
257
+ * @param parsedArgs the parsed arguments to set the values in
258
+ * @param env the environment variables to get values from
259
+ * @param envPrefix the prefix to use for environment variables, if any
260
+ */
261
+ async function parseEnvironmentVariables(cliArguments, parsedArgs, env, envPrefix, valuesSetByCli) {
262
+ if (!envPrefix) {
263
+ return;
264
+ }
265
+ const prefix = envPrefix + '_';
266
+ const envToKeys = Object.keys(cliArguments).reduce((acc, key) => {
267
+ acc[camelToCapitalSnakeCase(key)] = key;
268
+ return acc;
269
+ }, {});
270
+ for (const [key, value] of Object.entries(env)) {
271
+ if (key.startsWith(prefix)) {
272
+ const optionKey = key.slice(prefix.length);
273
+ const option = envToKeys[optionKey];
274
+ if (option) {
275
+ const config = cliArguments[option];
276
+ initializeDefault(parsedArgs, cliArguments, option);
277
+ if (config.present) {
278
+ parsedArgs[option] = await config.present(parsedArgs[option]);
279
+ }
280
+ if (!config.character) {
281
+ const values = value.split(' ');
282
+ const validation = await config.validateValues(parsedArgs[option], values, valuesSetByCli[option] === undefined);
283
+ if (!validation.valid) {
284
+ const s = values.length > 1 ? 's' : '';
285
+ (0, utils_js_1.exit)(2, `Invalid value${s} for environment ${key}: ${validation.message}`);
286
+ return;
287
+ }
288
+ parsedArgs[option] = await config.reduceValues(parsedArgs[option], validation.value, valuesSetByCli[option] === undefined);
289
+ valuesSetByCli[option] = true;
290
+ }
291
+ }
292
+ }
293
+ }
294
+ }
295
+ /**
296
+ * Groups arguments into chunks based on the -- separator.
297
+ *
298
+ * @param args
299
+ * @returns
300
+ */
301
+ function groupArguments(args) {
302
+ const grouped = [];
303
+ let currentChunk = [];
304
+ for (let i = 0; i < args.length; i++) {
305
+ const arg = args[i];
306
+ if (arg === '--') {
307
+ grouped.push({
308
+ first: arg,
309
+ rest: args.slice(i + 1),
310
+ isFirst: grouped.length === 0,
311
+ isLast: true
312
+ });
313
+ break;
314
+ }
315
+ if (arg.startsWith('-') && currentChunk.length > 0) {
316
+ grouped.push({
317
+ first: currentChunk.at(0),
318
+ rest: currentChunk.slice(1),
319
+ isFirst: grouped.length === 0,
320
+ isLast: false
321
+ });
322
+ currentChunk = [];
323
+ }
324
+ currentChunk.push(arg);
325
+ }
326
+ if (currentChunk.length > 0) {
327
+ grouped.push({
328
+ first: currentChunk.at(0),
329
+ rest: currentChunk.slice(1),
330
+ isFirst: grouped.length === 0,
331
+ isLast: true
332
+ });
333
+ }
334
+ return grouped;
335
+ }
336
+ function camelToCapitalSnakeCase(input) {
337
+ return input
338
+ .replace(/([a-z0-9])([A-Z])/g, '$1_$2') // Insert underscore before capital letters
339
+ .toUpperCase(); // Convert to uppercase
340
+ }
341
+ function camelToKebabCase(input) {
342
+ return input
343
+ .replace(/([a-z0-9])([A-Z])/g, '$1-$2') // Insert dash before capital letters
344
+ .toLowerCase(); // Convert to lowercase
345
+ }
346
+ function printHelpContents(command, subcommands, cliOptions, additionalArgs, selectedSubcommand) {
347
+ const logger = additionalArgs?.consoleLogger ?? console;
348
+ const operandsExpected = additionalArgs?.expectOperands != undefined ? additionalArgs?.expectOperands : true;
349
+ const operandsName = additionalArgs?.operandsName ?? 'operand';
350
+ const operandsString = operandsExpected ? ` [--] [${operandsName}1] [${operandsName}2]` : '';
351
+ const anyGlobalFlags = Object.values(cliOptions).some((option) => option.character);
352
+ if (selectedSubcommand) {
353
+ const anyCommandFlags = Object.values(subcommands[selectedSubcommand].arguments).some((option) => option.character);
354
+ const flags = anyGlobalFlags || anyCommandFlags ? ' [flags]' : '';
355
+ let usageString = `Usage: ${command} ${selectedSubcommand} [options]${flags}${operandsString}`;
356
+ if (additionalArgs?.allowOperandsFromStdin) {
357
+ usageString += `\n <${operandsName}s to stdout> | ${command} ${selectedSubcommand} [options]${flags}`;
358
+ }
359
+ logger.log(usageString);
360
+ logger.log('');
361
+ logger.log(`${subcommands[selectedSubcommand].description}`);
362
+ logger.log(`${selectedSubcommand} Options:`);
363
+ printOptions(subcommands[selectedSubcommand].arguments, logger);
364
+ logger.log('');
365
+ }
366
+ else {
367
+ const anyCommandFlags = Object.values(subcommands).some((subcommand) => Object.values(subcommand.arguments).some((option) => option.character));
368
+ const flags = anyGlobalFlags || anyCommandFlags ? ' [flags]' : '';
369
+ let singleUseString = `${command}`;
370
+ const subcommandKeys = Object.keys(subcommands);
371
+ if (subcommandKeys.length > 0 && additionalArgs?.requireSubcommand) {
372
+ singleUseString += ' <subcommand>';
373
+ }
374
+ else if (subcommandKeys.length > 0) {
375
+ singleUseString += ' [subcommand]';
376
+ }
377
+ singleUseString += ` [options]${flags}`;
378
+ let usageString = `Usage: ${singleUseString}${operandsString}`;
379
+ if (additionalArgs?.allowOperandsFromStdin) {
380
+ usageString += `\n <${operandsName}s to stdout> | ${singleUseString}`;
381
+ }
382
+ logger.log(usageString);
383
+ const longestCommand = subcommandKeys.reduce((acc, cmd) => Math.max(acc, cmd.length), 0);
384
+ if (subcommandKeys.length > 0) {
385
+ logger.log('Subcommands:');
386
+ for (const cmd of subcommandKeys) {
387
+ const description = subcommands[cmd].description;
388
+ logger.log(` ${(cmd + ':').padEnd(longestCommand + 1)} ${description}`);
389
+ }
390
+ logger.log('');
391
+ logger.log(` Use ${command} <subcommand> --help for more information about a subcommand`);
392
+ }
393
+ }
394
+ logger.log('Global Options:');
395
+ const globalOptions = {
396
+ ...cliOptions,
397
+ ...{
398
+ help: {
399
+ description: 'Print the help contents and exit'
400
+ }
401
+ }
402
+ };
403
+ if (additionalArgs?.version) {
404
+ globalOptions['version'] = {
405
+ description: 'Print the version and exit'
406
+ };
407
+ }
408
+ printOptions(globalOptions, logger);
409
+ }
410
+ function printOptions(cliOptions, logger) {
411
+ const longestOption = Object.keys(cliOptions).reduce((acc, key) => Math.max(acc, camelToKebabCase(key).length + 2), 0) + 1;
412
+ const terminalWidth = process.stdout.columns ?? 80;
413
+ const nonBooleanBuffer = ' ';
414
+ for (const [key, option] of Object.entries(cliOptions)) {
415
+ let optionString = ` --${camelToKebabCase(key)}:`.padEnd(longestOption + 3);
416
+ if (option.character) {
417
+ optionString += `(-${option.character}) `;
418
+ }
419
+ else {
420
+ optionString += nonBooleanBuffer;
421
+ }
422
+ const leftBar = optionString.length;
423
+ optionString += option.description;
424
+ logger.log(optionString.slice(0, terminalWidth));
425
+ let stringToPrint = optionString.slice(terminalWidth);
426
+ const secondLineLength = terminalWidth - leftBar;
427
+ while (stringToPrint.length > 0) {
428
+ logger.log(' '.repeat(leftBar) + stringToPrint.slice(0, secondLineLength).trimStart());
429
+ stringToPrint = stringToPrint.slice(secondLineLength);
430
+ }
431
+ }
432
+ }
433
+ async function printVersion(versionInfo, logger) {
434
+ if (!versionInfo) {
435
+ logger.log('Version information not available. This is a bug.');
436
+ return;
437
+ }
438
+ if (typeof versionInfo === 'string') {
439
+ logger.log(versionInfo);
440
+ return;
441
+ }
442
+ let currentVersion = null;
443
+ if (typeof versionInfo.currentVersion === 'string') {
444
+ currentVersion = versionInfo.currentVersion;
445
+ }
446
+ else if (typeof versionInfo.currentVersion === 'function') {
447
+ currentVersion = await versionInfo.currentVersion();
448
+ }
449
+ if (!currentVersion) {
450
+ logger.log('Current version not available');
451
+ return;
452
+ }
453
+ let latestVersion = null;
454
+ if (typeof versionInfo.checkForUpdates == 'string') {
455
+ latestVersion = await getLatestVersionFromNpm(versionInfo.checkForUpdates);
456
+ }
457
+ else if (typeof versionInfo.checkForUpdates === 'function') {
458
+ latestVersion = await versionInfo.checkForUpdates();
459
+ }
460
+ let updateMessage = undefined;
461
+ if (currentVersion && latestVersion && currentVersion !== latestVersion) {
462
+ if (versionInfo.updateMessage) {
463
+ updateMessage = versionInfo.updateMessage(currentVersion, latestVersion);
464
+ }
465
+ else if (typeof versionInfo.checkForUpdates === 'string') {
466
+ updateMessage = `Latest: ${latestVersion}. To update run: npm update -g ${versionInfo.checkForUpdates}`;
467
+ }
468
+ else {
469
+ updateMessage = `Latest: ${latestVersion}.`;
470
+ }
471
+ }
472
+ else if (currentVersion && latestVersion && currentVersion === latestVersion) {
473
+ // updateMessage = 'You are using the latest version.'
474
+ }
475
+ logger.log(currentVersion);
476
+ if (updateMessage) {
477
+ logger.log(updateMessage);
478
+ }
479
+ }
480
+ /**
481
+ * Fetch the latest version of a package from the npm registry.
482
+ *
483
+ * @param packageName the name of the npm package to check, e.g. "my-cli-tool" or "@my-org/my-cli-tool"
484
+ * @returns the latest version of the package published on npm or null if any error occurs
485
+ */
486
+ async function getLatestVersionFromNpm(packageName) {
487
+ try {
488
+ const res = await fetch(`https://registry.npmjs.org/${packageName}/latest`);
489
+ if (res.ok) {
490
+ const data = await res.json();
491
+ return data.version || null;
492
+ }
493
+ }
494
+ catch (e) {
495
+ // Ignore errors fetching latest version
496
+ }
497
+ return null;
498
+ }
499
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;AAiKA,8CAuPC;AAwJD,0DAIC;AAED,4CAIC;AAED,8CAwFC;AAnpBD,yCAAiC;AAuJjC;;;;;;;;GAQG;AACI,KAAK,UAAU,iBAAiB,CAKrC,OAAe,EACf,WAAc,EACd,OAAkB,EAClB,iBAAiD;IAEjD,MAAM,IAAI,GAAG,iBAAiB,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7D,MAAM,GAAG,GAAG,iBAAiB,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACjD,MAAM,UAAU,GAAQ,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,cAAc,GAA2B,EAAE,CAAA;IACjD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC/C,MAAM,mBAAmB,GAAG,cAAc,CAAC,MAAM,CAAA;IACjD,MAAM,eAAe,GAAkC,EAAE,GAAG,OAAO,EAAE,CAAA;IACrE,MAAM,MAAM,GAAG,iBAAiB,EAAE,aAAa,IAAI,OAAO,CAAA;IAC1D,IAAI,UAA8B,CAAA;IAClC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,EAAE,gBAAgB,CAAC;QAC7E,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,cAAc;QACrC,CAAC,CAAC,IAAI,CAAA;IAER,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;QAC7D,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAA;QACnE,IAAA,eAAI,EAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QAClB,OAAO,EAAS,CAAA;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,MAAM,UAAU,GAA4B,EAAE,CAAA;IAC9C,8BAA8B;IAC9B,MAAM,qBAAqB,GAAG,EAAE,CAAA;IAChC,wBAAwB,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IAE9D,uCAAuC;IACvC,MAAM,yBAAyB,CAC7B,OAAO,EACP,qBAAqB,EACrB,GAAG,EACH,iBAAiB,EAAE,SAAS,EAC5B,UAAU,CACX,CAAA;IAED,uCAAuC;IACvC,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IAE1C,2CAA2C;IAC3C,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,aAAa,EAAE,CAAC;QAC7D,8BAA8B;QAC9B,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAA;YAC/E,IAAA,eAAI,EAAC,CAAC,EAAE,SAAS,CAAC,CAAA;YAClB,OAAO,EAAS,CAAA;QAClB,CAAC;QAED,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,IAAI,iBAAiB,EAAE,OAAO,EAAE,CAAC;gBAC/B,MAAM,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBACrD,IAAA,eAAI,EAAC,CAAC,EAAE,SAAS,CAAC,CAAA;gBAClB,OAAO,EAAS,CAAA;YAClB,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,mBAAmB,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,MAAM,EAAE,CAAC;oBACX,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAA;gBAC/B,CAAC;qBAAM,CAAC;oBACN,IAAA,eAAI,EAAC,CAAC,EAAE,YAAY,KAAK,mDAAmD,CAAC,CAAA;gBAC/E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,IAAA,eAAI,EAAC,CAAC,EAAE,mDAAmD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;gBAC3F,CAAC;gBACD,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACrD,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAClD,CAAA;gBAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAClC,IAAA,eAAI,EAAC,CAAC,EAAE,oBAAoB,KAAK,EAAE,CAAC,CAAA;oBACpC,OAAO,EAAS,CAAA;gBAClB,CAAC;qBAAM,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvC,IAAA,eAAI,EAAC,CAAC,EAAE,sBAAsB,KAAK,EAAE,CAAC,CAAA;oBACtC,OAAO,EAAS,CAAA;gBAClB,CAAC;gBACD,UAAU,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;gBACpC,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,SAAS,CAAA;gBAC3D,wBAAwB,CAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAA;gBACxE,MAAM,yBAAyB,CAC7B,iBAAiB,EACjB,qBAAqB,EACrB,GAAG,EACH,iBAAiB,EAAE,SAAS,EAC5B,UAAU,CACX,CAAA;gBACD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC9D,eAAe,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;gBAC/B,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAA,eAAI,EAAC,CAAC,EAAE,uDAAuD,CAAC,CAAA;YAClE,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;YAC5D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAChE,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAChC,CAAA;YAED,IAAI,cAAc,GAAuB,SAAS,CAAA;YAClD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC;iBAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,yFAAyF;gBACzF,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;gBACvE,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,IAAA,eAAI,EAAC,CAAC,EAAE,uBAAuB,KAAK,EAAE,CAAC,CAAA;gBACzC,CAAC;gBACD,cAAc,GAAG,UAAU,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/B,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAA;oBAC/E,IAAA,eAAI,EAAC,CAAC,EAAE,SAAS,CAAC,CAAA;oBAClB,OAAO,EAAS,CAAA;gBAClB,CAAC;qBAAM,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,iBAAiB,EAAE,OAAO,EAAE,CAAC;oBACvE,MAAM,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;oBACrD,IAAA,eAAI,EAAC,CAAC,EAAE,SAAS,CAAC,CAAA;oBAClB,OAAO,EAAS,CAAA;gBAClB,CAAC;gBACD,IAAA,eAAI,EAAC,CAAC,EAAE,qBAAqB,KAAK,EAAE,CAAC,CAAA;YACvC,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAA,eAAI,EAAC,CAAC,EAAE,qBAAqB,KAAK,EAAE,CAAC,CAAA;gBACrC,OAAO,EAAS,CAAA;YAClB,CAAC;YAED,MAAM,gBAAgB,GAAG,cAAe,CAAA;YACxC,MAAM,gBAAgB,GAAG,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAA;YAClE,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAA;YACtD,iBAAiB,CAAC,UAAU,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;YAChE,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzB,UAAU,CAAC,gBAAgB,CAAC,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAA;YACzF,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,IAAA,eAAI,EACF,CAAC,EACD,wBAAwB,gBAAgB,yCAAyC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnG,CAAA;oBACD,OAAO,EAAS,CAAA;gBAClB,CAAC;qBAAM,CAAC;oBACN,qFAAqF;oBACrF,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpB,IAAA,eAAI,EACF,CAAC,EACD,wBAAwB,gBAAgB,yCAAyC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnG,CAAA;wBACD,OAAO,EAAS,CAAA;oBAClB,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,eAAe,GAAG,YAAY,CAAC,oBAAoB;oBACvD,CAAC,CAAC,YAAY,CAAC,oBAAoB,EAAE;oBACrC,CAAC,CAAC,KAAK,CAAA;gBAET,IAAI,OAAO,GAAG,IAAI,CAAA;gBAClB,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,IAAI,MAAM,IAAI,cAAc,EAAE,CAAC;wBAC7B,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;wBACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;oBACjC,CAAC;gBACH,CAAC;gBAED,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;gBACjD,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,cAAc,CAClD,YAAY,EACZ,OAAO,EACP,UAAU,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAC3C,CAAA;gBACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBACtB,IAAA,eAAI,EAAC,CAAC,EAAE,wBAAwB,gBAAgB,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;oBAC1E,OAAO,EAAS,CAAA;gBAClB,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,gBAAgB,CAAC,GAAG,MAAM,YAAY,CAAC,YAAY,CAC5D,YAAY,EACZ,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAC3C,CAAA;oBACD,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAA;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC/B,IAAA,eAAI,EAAC,CAAC,EAAE,mBAAmB,KAAK,wCAAwC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC1F,OAAO,EAAS,CAAA;YAClB,CAAC;iBAAM,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,qFAAqF;gBACrF,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,IAAA,eAAI,EAAC,CAAC,EAAE,mBAAmB,KAAK,wCAAwC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAC1F,OAAO,EAAS,CAAA;gBAClB,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;gBACxB,CAAC;YACH,CAAC;YAED,2BAA2B;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,CAAC,IAAI,IAAI,cAAc,CAAC,EAAE,CAAC;oBAC9B,IAAA,eAAI,EAAC,CAAC,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAA;gBACnC,CAAC;gBACD,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;gBAChC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,mBAAmB,GAAG,CAAC,IAAI,iBAAiB,EAAE,iBAAiB,IAAI,CAAC,UAAU,EAAE,CAAC;QACnF,IAAA,eAAI,EAAC,CAAC,EAAE,0BAA0B,CAAC,CAAA;IACrC,CAAC;IAED,uDAAuD;IACvD,IAAI,CAAC,cAAc,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAA,eAAI,EAAC,CAAC,EAAE,2CAA2C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,yBAAyB;IACzB,OAAO;QACL,IAAI,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,qBAAqB,EAAE,GAAG,UAAU,EAAE;QACjE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAY;QACnD,UAAU,EAAE,UAAiD;QAC7D,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;QAC1B,SAAS,EAAE,GAAG,EAAE;YACd,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAA;QACjF,CAAC;KACqC,CAAA;AAC1C,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAC/B,UAAe,EACf,cAAsC,EACtC,YAAe;IAEf,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,YAAY,CAAA;QACrC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAA;QACtD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CACxB,UAAe,EACf,YAAe,EACf,GAAY;IAEZ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;QACpC,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,CAAA;IAClD,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,yBAAyB,CACtC,YAA2C,EAC3C,UAAe,EACf,GAAuC,EACvC,SAA6B,EAC7B,cAAuC;IAEvC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,GAAG,GAAG,CAAA;IAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAChD,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACX,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;QACvC,OAAO,GAAG,CAAA;IACZ,CAAC,EACD,EAA4B,CAC7B,CAAA;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;YACnC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;gBACnC,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;gBACnD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/D,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,KAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAChC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAC5C,UAAU,CAAC,MAAM,CAAC,EAClB,MAAM,EACN,cAAc,CAAC,MAAM,CAAC,KAAK,SAAS,CACrC,CAAA;oBACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;wBACtB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;wBACtC,IAAA,eAAI,EAAC,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,GAAG,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;wBAC1E,OAAM;oBACR,CAAC;oBACD,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,YAAY,CAC5C,UAAU,CAAC,MAAM,CAAC,EAClB,UAAU,CAAC,KAAK,EAChB,cAAc,CAAC,MAAM,CAAC,KAAK,SAAS,CACrC,CAAA;oBACD,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAc;IACpC,MAAM,OAAO,GAAoB,EAAE,CAAA;IACnC,IAAI,YAAY,GAAa,EAAE,CAAA;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;gBAC7B,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;YACF,MAAK;QACP,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAE;gBAC1B,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3B,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;gBAC7B,MAAM,EAAE,KAAK;aACd,CAAC,CAAA;YACF,YAAY,GAAG,EAAE,CAAA;QACnB,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAE;YAC1B,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3B,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;YAC7B,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAgB,uBAAuB,CAAC,KAAa;IACnD,OAAO,KAAK;SACT,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,2CAA2C;SAClF,WAAW,EAAE,CAAA,CAAC,uBAAuB;AAC1C,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK;SACT,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,qCAAqC;SAC5E,WAAW,EAAE,CAAA,CAAC,uBAAuB;AAC1C,CAAC;AAED,SAAgB,iBAAiB,CAI/B,OAAe,EACf,WAAc,EACd,UAAa,EACb,cAAqC,EACrC,kBAAuC;IAEvC,MAAM,MAAM,GAAG,cAAc,EAAE,aAAa,IAAI,OAAO,CAAA;IACvD,MAAM,gBAAgB,GACpB,cAAc,EAAE,cAAc,IAAI,SAAS,CAAC,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAA;IACrF,MAAM,YAAY,GAAG,cAAc,EAAE,YAAY,IAAI,SAAS,CAAA;IAC9D,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,YAAY,OAAO,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IAE5F,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAEnF,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CACnF,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAC7B,CAAA;QAED,MAAM,KAAK,GAAG,cAAc,IAAI,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;QAEjE,IAAI,WAAW,GAAG,UAAU,OAAO,IAAI,kBAAkB,aAAa,KAAK,GAAG,cAAc,EAAE,CAAA;QAC9F,IAAI,cAAc,EAAE,sBAAsB,EAAE,CAAC;YAC3C,WAAW,IAAI,aAAa,YAAY,kBAAkB,OAAO,IAAI,kBAAkB,aAAa,KAAK,EAAE,CAAA;QAC7G,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACvB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;QAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,WAAW,CAAC,CAAA;QAC5C,YAAY,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC/D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CACrE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CACvE,CAAA;QAED,MAAM,KAAK,GAAG,cAAc,IAAI,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;QAEjE,IAAI,eAAe,GAAG,GAAG,OAAO,EAAE,CAAA;QAClC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC/C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,EAAE,iBAAiB,EAAE,CAAC;YACnE,eAAe,IAAI,eAAe,CAAA;QACpC,CAAC;aAAM,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,eAAe,IAAI,eAAe,CAAA;QACpC,CAAC;QAED,eAAe,IAAI,aAAa,KAAK,EAAE,CAAA;QACvC,IAAI,WAAW,GAAG,UAAU,eAAe,GAAG,cAAc,EAAE,CAAA;QAC9D,IAAI,cAAc,EAAE,sBAAsB,EAAE,CAAC;YAC3C,WAAW,IAAI,aAAa,YAAY,kBAAkB,eAAe,EAAE,CAAA;QAC7E,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEvB,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAExF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YAC1B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAA;gBAChD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;YAC1E,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACd,MAAM,CAAC,GAAG,CAAC,QAAQ,OAAO,8DAA8D,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC7B,MAAM,aAAa,GAAkC;QACnD,GAAG,UAAU;QACb,GAAI;YACF,IAAI,EAAE;gBACJ,WAAW,EAAE,kCAAkC;aAChD;SACM;KACV,CAAA;IACD,IAAI,cAAc,EAAE,OAAO,EAAE,CAAC;QAC5B,aAAa,CAAC,SAAS,CAAC,GAAG;YACzB,WAAW,EAAE,4BAA4B;SACnC,CAAA;IACV,CAAC;IAED,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,YAAY,CAGnB,UAAqB,EAAE,MAAqB;IAC5C,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAC7D,CAAC,CACF,GAAG,CAAC,CAAA;IAEP,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IAElD,MAAM,gBAAgB,GAAG,OAAO,CAAA;IAChC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,IAAI,YAAY,GAAG,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;QAC5E,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,YAAY,IAAI,KAAK,MAAM,CAAC,SAAS,IAAI,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,YAAY,IAAI,gBAAgB,CAAA;QAClC,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAA;QACnC,YAAY,IAAI,MAAM,CAAC,WAAW,CAAA;QAElC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAA;QAChD,IAAI,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACrD,MAAM,gBAAgB,GAAG,aAAa,GAAG,OAAO,CAAA;QAEhD,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;YACtF,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,WAA4C,EAC5C,MAAqB;IAErB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;QAC/D,OAAM;IACR,CAAC;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACvB,OAAM;IACR,CAAC;IAED,IAAI,cAAc,GAAkB,IAAI,CAAA;IACxC,IAAI,OAAO,WAAW,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QACnD,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;IAC7C,CAAC;SAAM,IAAI,OAAO,WAAW,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QAC5D,cAAc,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAA;IACrD,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;QAC3C,OAAM;IACR,CAAC;IAED,IAAI,aAAa,GAAkB,IAAI,CAAA;IACvC,IAAI,OAAO,WAAW,CAAC,eAAe,IAAI,QAAQ,EAAE,CAAC;QACnD,aAAa,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;IAC5E,CAAC;SAAM,IAAI,OAAO,WAAW,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAC7D,aAAa,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,CAAA;IACrD,CAAC;IAED,IAAI,aAAa,GAAuB,SAAS,CAAA;IACjD,IAAI,cAAc,IAAI,aAAa,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;QACxE,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;YAC9B,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;QAC1E,CAAC;aAAM,IAAI,OAAO,WAAW,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC3D,aAAa,GAAG,WAAW,aAAa,kCAAkC,WAAW,CAAC,eAAe,EAAE,CAAA;QACzG,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,WAAW,aAAa,GAAG,CAAA;QAC7C,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,IAAI,aAAa,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;QAC/E,sDAAsD;IACxD,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC1B,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAC3B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,uBAAuB,CAAC,WAAmB;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8BAA8B,WAAW,SAAS,CAAC,CAAA;QAC3E,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAC7B,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAA;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,wCAAwC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,13 @@
1
+ export { type CustomArgument } from './arguments/argument.js';
2
+ export { arrayValueArgument } from './arguments/arrayValueArgument.js';
3
+ export { booleanArgument } from './arguments/booleanArgument.js';
4
+ export { enumArgument } from './arguments/enumArgument.js';
5
+ export { enumArrayArgument } from './arguments/enumArrayArgument.js';
6
+ export { mapArgument } from './arguments/mapArgument.js';
7
+ export { numberArgument, numberArrayArgument } from './arguments/numberArguments.js';
8
+ export { singleValueArgument } from './arguments/singleValueArgument.js';
9
+ export { stringArgument, stringArrayArgument } from './arguments/stringArguments.js';
10
+ export { parseCliArguments, type AdditionalCliOptions, type Config } from './cli.js';
11
+ export { createPackageFileReader, type PackageFileReader } from './readRelative.js';
12
+ export { readStdin } from './stdin.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readStdin = exports.createPackageFileReader = exports.parseCliArguments = exports.stringArrayArgument = exports.stringArgument = exports.singleValueArgument = exports.numberArrayArgument = exports.numberArgument = exports.mapArgument = exports.enumArrayArgument = exports.enumArgument = exports.booleanArgument = exports.arrayValueArgument = void 0;
4
+ var arrayValueArgument_js_1 = require("./arguments/arrayValueArgument.js");
5
+ Object.defineProperty(exports, "arrayValueArgument", { enumerable: true, get: function () { return arrayValueArgument_js_1.arrayValueArgument; } });
6
+ var booleanArgument_js_1 = require("./arguments/booleanArgument.js");
7
+ Object.defineProperty(exports, "booleanArgument", { enumerable: true, get: function () { return booleanArgument_js_1.booleanArgument; } });
8
+ var enumArgument_js_1 = require("./arguments/enumArgument.js");
9
+ Object.defineProperty(exports, "enumArgument", { enumerable: true, get: function () { return enumArgument_js_1.enumArgument; } });
10
+ var enumArrayArgument_js_1 = require("./arguments/enumArrayArgument.js");
11
+ Object.defineProperty(exports, "enumArrayArgument", { enumerable: true, get: function () { return enumArrayArgument_js_1.enumArrayArgument; } });
12
+ var mapArgument_js_1 = require("./arguments/mapArgument.js");
13
+ Object.defineProperty(exports, "mapArgument", { enumerable: true, get: function () { return mapArgument_js_1.mapArgument; } });
14
+ var numberArguments_js_1 = require("./arguments/numberArguments.js");
15
+ Object.defineProperty(exports, "numberArgument", { enumerable: true, get: function () { return numberArguments_js_1.numberArgument; } });
16
+ Object.defineProperty(exports, "numberArrayArgument", { enumerable: true, get: function () { return numberArguments_js_1.numberArrayArgument; } });
17
+ var singleValueArgument_js_1 = require("./arguments/singleValueArgument.js");
18
+ Object.defineProperty(exports, "singleValueArgument", { enumerable: true, get: function () { return singleValueArgument_js_1.singleValueArgument; } });
19
+ var stringArguments_js_1 = require("./arguments/stringArguments.js");
20
+ Object.defineProperty(exports, "stringArgument", { enumerable: true, get: function () { return stringArguments_js_1.stringArgument; } });
21
+ Object.defineProperty(exports, "stringArrayArgument", { enumerable: true, get: function () { return stringArguments_js_1.stringArrayArgument; } });
22
+ var cli_js_1 = require("./cli.js");
23
+ Object.defineProperty(exports, "parseCliArguments", { enumerable: true, get: function () { return cli_js_1.parseCliArguments; } });
24
+ var readRelative_js_1 = require("./readRelative.js");
25
+ Object.defineProperty(exports, "createPackageFileReader", { enumerable: true, get: function () { return readRelative_js_1.createPackageFileReader; } });
26
+ var stdin_js_1 = require("./stdin.js");
27
+ Object.defineProperty(exports, "readStdin", { enumerable: true, get: function () { return stdin_js_1.readStdin; } });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,2EAAsE;AAA7D,2HAAA,kBAAkB,OAAA;AAC3B,qEAAgE;AAAvD,qHAAA,eAAe,OAAA;AACxB,+DAA0D;AAAjD,+GAAA,YAAY,OAAA;AACrB,yEAAoE;AAA3D,yHAAA,iBAAiB,OAAA;AAC1B,6DAAwD;AAA/C,6GAAA,WAAW,OAAA;AACpB,qEAAoF;AAA3E,oHAAA,cAAc,OAAA;AAAE,yHAAA,mBAAmB,OAAA;AAC5C,6EAAwE;AAA/D,6HAAA,mBAAmB,OAAA;AAC5B,qEAAoF;AAA3E,oHAAA,cAAc,OAAA;AAAE,yHAAA,mBAAmB,OAAA;AAC5C,mCAAoF;AAA3E,2GAAA,iBAAiB,OAAA;AAC1B,qDAAmF;AAA1E,0HAAA,uBAAuB,OAAA;AAChC,uCAAsC;AAA7B,qGAAA,SAAS,OAAA"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * An interface for reading files from a relative path inside your packaged cli app. For instance to
3
+ * read the package.json inside your package. Works on ESM and CommonJS modules.
4
+ */
5
+ export interface PackageFileReader {
6
+ /**
7
+ * Read a file from a relative path inside your packaged cli app. For instance to
8
+ * read the package.json inside your package. Works on ESM and CommonJS modules.
9
+ *
10
+ * @param pathParts the path to the file, relative to the root of your project with each
11
+ * directory as a separate string in the array and the file name as the last string in the array.
12
+ */
13
+ readFile(pathParts: string[]): Promise<string>;
14
+ }
15
+ /**
16
+ * A relatively sane way to read a file from a relative path inside your packaged cli app. For instance to
17
+ * read the package.json inside your package. Works on ESM and CommonJS modules. Use __filename
18
+ * or import.meta.url to get the path of the file you are in and pass it to this function. Set the `levelsUp`
19
+ * based on how your project is packaged. For instance, if your file is packaged in `dist/cli.js` and you would use `1` if
20
+ * you packaged your file is in `dist/src/cli.js` and you would use `2`. Whatever you need to get to the root.
21
+ *
22
+ * You get back a `PackageFileReader` which has a `readFile` method. You can then call that method
23
+ * with the path parts to the file you want to read, relative to the root of your project.
24
+ * For instance, to read the `package.json` file in the root of your project, you would call:
25
+ * ```ts
26
+ * const reader = await createPackageFileReader(import.meta.url, 1) // if your file is in dist/cli.js
27
+ * const packageJson = await reader.readFile(['package.json'])
28
+ * ```
29
+ *
30
+ * @param currentFile the path to start from use `import.meta.url` for esm or `__filename` for CommonJS in most cases
31
+ * @param levelsUp since __import.meta.url or __filename is the file you are in, you need to go up a few levels to ge to the root of your project. Use 0 for the current directory of the file you're calling from.
32
+ * @returns a `PackageFileReader` you can use to read files relative to the root of your project.
33
+ */
34
+ export declare function createPackageFileReader(currentFile: string, levelsUp: number): PackageFileReader;
35
+ //# sourceMappingURL=readRelative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readRelative.d.ts","sourceRoot":"","sources":["../../src/readRelative.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAC/C;AA+CD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAMhG"}