@cloud-copilot/cli 0.1.17 → 0.1.19

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 CHANGED
@@ -125,7 +125,7 @@ String or number arguments can be provided as `--name value` or `--name value1 v
125
125
 
126
126
  String or number arguments will throw an error if:
127
127
 
128
- - The flag is specified an no values are provided
128
+ - The flag is specified and no values are provided
129
129
  - The argument accepts only one value and multiple values are provided
130
130
  - The argument is a number and a non-number value is provided
131
131
 
@@ -135,14 +135,12 @@ Enum arguments can be provided as `--name value1 value2`. The values must be one
135
135
 
136
136
  Enum arguments will throw an error if:
137
137
 
138
- - The flag is specified an no values are provided
138
+ - The flag is specified and no values are provided
139
139
  - The argument accepts only one value and multiple values are provided
140
140
  - Any of the arguments provided are not in the list of allowed values.
141
141
 
142
142
  If the value is not one of the values provided, an error will be thrown.
143
143
 
144
- If a string or number argument is provided with no values an error will be thrown.
145
-
146
144
  ### Operands
147
145
 
148
146
  Operands are the remaining values after the arguments.
@@ -1,3 +1,4 @@
1
1
  export { parseCliArguments, printHelpContents, type AdditionalCliArguments, type Config } from './cli.js';
2
+ export { readRelativeFile } from './readRelative.js';
2
3
  export { readStdin } from './stdin.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
package/dist/cjs/index.js CHANGED
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readStdin = exports.printHelpContents = exports.parseCliArguments = void 0;
3
+ exports.readStdin = exports.readRelativeFile = exports.printHelpContents = exports.parseCliArguments = void 0;
4
4
  var cli_js_1 = require("./cli.js");
5
5
  Object.defineProperty(exports, "parseCliArguments", { enumerable: true, get: function () { return cli_js_1.parseCliArguments; } });
6
6
  Object.defineProperty(exports, "printHelpContents", { enumerable: true, get: function () { return cli_js_1.printHelpContents; } });
7
+ var readRelative_js_1 = require("./readRelative.js");
8
+ Object.defineProperty(exports, "readRelativeFile", { enumerable: true, get: function () { return readRelative_js_1.readRelativeFile; } });
7
9
  var stdin_js_1 = require("./stdin.js");
8
10
  Object.defineProperty(exports, "readStdin", { enumerable: true, get: function () { return stdin_js_1.readStdin; } });
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAKiB;AAJf,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AAInB,uCAAsC;AAA7B,qGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAKiB;AAJf,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AAInB,qDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,uCAAsC;AAA7B,qGAAA,SAAS,OAAA"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * A relatively sane way to read a file 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. Use __filename
4
+ * or import.meta.url to get the path of the file you are in and pass it to this function. Set the `levelsUp`
5
+ * based on how your project is packaged. For instance, if your file is packaged in `dist/cli.js` and you would use `1` if
6
+ * you packaged your file is in `dist/src/cli.js` and you would use `2`. Whatever you need to get to the root.
7
+ * Then the path parts are the path to the file you want to read, relative to the root of your project with each
8
+ * directory as a separate string in the array and the file name as the last string in the array. They will be
9
+ * joined together in a way that makes sense for the OS and module type your package is running in.
10
+ *
11
+ * @param currentFile the path to start from use `import.meta.url` or `__filename` for most cases
12
+ * @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.
13
+ * @param pathParts the path to the file, relative to the new root
14
+ * @returns the contents of the file as a string
15
+ */
16
+ export declare function readRelativeFile(currentFile: string, levelsUp: number, pathParts: string[]): Promise<string>;
17
+ //# sourceMappingURL=readRelative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readRelative.d.ts","sourceRoot":"","sources":["../../src/readRelative.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readRelativeFile = readRelativeFile;
4
+ const promises_1 = require("fs/promises");
5
+ const path_1 = require("path");
6
+ /**
7
+ * A relatively sane way to 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. Use __filename
9
+ * or import.meta.url to get the path of the file you are in and pass it to this function. Set the `levelsUp`
10
+ * based on how your project is packaged. For instance, if your file is packaged in `dist/cli.js` and you would use `1` if
11
+ * you packaged your file is in `dist/src/cli.js` and you would use `2`. Whatever you need to get to the root.
12
+ * Then the path parts are the path to the file you want to read, relative to the root of your project with each
13
+ * directory as a separate string in the array and the file name as the last string in the array. They will be
14
+ * joined together in a way that makes sense for the OS and module type your package is running in.
15
+ *
16
+ * @param currentFile the path to start from use `import.meta.url` or `__filename` for most cases
17
+ * @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.
18
+ * @param pathParts the path to the file, relative to the new root
19
+ * @returns the contents of the file as a string
20
+ */
21
+ async function readRelativeFile(currentFile, levelsUp, pathParts) {
22
+ const isEsm = currentFile.startsWith('file://');
23
+ const backSegments = Array(levelsUp).fill('..');
24
+ if (isEsm) {
25
+ const dirPath = currentFile.slice(0, currentFile.lastIndexOf('/'));
26
+ const { fileURLToPath } = await Promise.resolve().then(() => require('node:url'));
27
+ const { join } = await Promise.resolve().then(() => require('node:path'));
28
+ const startPath = fileURLToPath(dirPath);
29
+ const fullPath = join(startPath, ...backSegments, ...pathParts);
30
+ return await (0, promises_1.readFile)(fullPath, 'utf8');
31
+ }
32
+ else {
33
+ const dirPath = currentFile.slice(0, currentFile.lastIndexOf(path_1.sep));
34
+ const contents = await (0, promises_1.readFile)((0, path_1.join)(dirPath, ...backSegments, ...pathParts), 'utf8');
35
+ return contents;
36
+ }
37
+ }
38
+ //# sourceMappingURL=readRelative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readRelative.js","sourceRoot":"","sources":["../../src/readRelative.ts"],"names":[],"mappings":";;AAkBA,4CAoBC;AAtCD,0CAAsC;AACtC,+BAAgC;AAEhC;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,QAAgB,EAChB,SAAmB;IAEnB,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE/C,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QAClE,MAAM,EAAE,aAAa,EAAE,GAAG,2CAAa,UAAU,EAAC,CAAA;QAClD,MAAM,EAAE,IAAI,EAAE,GAAG,2CAAa,WAAW,EAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,CAAC,CAAA;QAC/D,OAAO,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,UAAG,CAAC,CAAC,CAAA;QAClE,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,CAAC,EAAE,MAAM,CAAC,CAAA;QACrF,OAAO,QAAQ,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { parseCliArguments, printHelpContents, type AdditionalCliArguments, type Config } from './cli.js';
2
+ export { readRelativeFile } from './readRelative.js';
2
3
  export { readStdin } from './stdin.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
package/dist/esm/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { parseCliArguments, printHelpContents } from './cli.js';
2
+ export { readRelativeFile } from './readRelative.js';
2
3
  export { readStdin } from './stdin.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EAGlB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EAGlB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * A relatively sane way to read a file 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. Use __filename
4
+ * or import.meta.url to get the path of the file you are in and pass it to this function. Set the `levelsUp`
5
+ * based on how your project is packaged. For instance, if your file is packaged in `dist/cli.js` and you would use `1` if
6
+ * you packaged your file is in `dist/src/cli.js` and you would use `2`. Whatever you need to get to the root.
7
+ * Then the path parts are the path to the file you want to read, relative to the root of your project with each
8
+ * directory as a separate string in the array and the file name as the last string in the array. They will be
9
+ * joined together in a way that makes sense for the OS and module type your package is running in.
10
+ *
11
+ * @param currentFile the path to start from use `import.meta.url` or `__filename` for most cases
12
+ * @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.
13
+ * @param pathParts the path to the file, relative to the new root
14
+ * @returns the contents of the file as a string
15
+ */
16
+ export declare function readRelativeFile(currentFile: string, levelsUp: number, pathParts: string[]): Promise<string>;
17
+ //# sourceMappingURL=readRelative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readRelative.d.ts","sourceRoot":"","sources":["../../src/readRelative.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
@@ -0,0 +1,35 @@
1
+ import { readFile } from 'fs/promises';
2
+ import { join, sep } from 'path';
3
+ /**
4
+ * A relatively sane way to read a file from a relative path inside your packaged cli app. For instance to
5
+ * read the package.json inside your package. Works on ESM and CommonJS modules. Use __filename
6
+ * or import.meta.url to get the path of the file you are in and pass it to this function. Set the `levelsUp`
7
+ * based on how your project is packaged. For instance, if your file is packaged in `dist/cli.js` and you would use `1` if
8
+ * you packaged your file is in `dist/src/cli.js` and you would use `2`. Whatever you need to get to the root.
9
+ * Then the path parts are the path to the file you want to read, relative to the root of your project with each
10
+ * directory as a separate string in the array and the file name as the last string in the array. They will be
11
+ * joined together in a way that makes sense for the OS and module type your package is running in.
12
+ *
13
+ * @param currentFile the path to start from use `import.meta.url` or `__filename` for most cases
14
+ * @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.
15
+ * @param pathParts the path to the file, relative to the new root
16
+ * @returns the contents of the file as a string
17
+ */
18
+ export async function readRelativeFile(currentFile, levelsUp, pathParts) {
19
+ const isEsm = currentFile.startsWith('file://');
20
+ const backSegments = Array(levelsUp).fill('..');
21
+ if (isEsm) {
22
+ const dirPath = currentFile.slice(0, currentFile.lastIndexOf('/'));
23
+ const { fileURLToPath } = await import('node:url');
24
+ const { join } = await import('node:path');
25
+ const startPath = fileURLToPath(dirPath);
26
+ const fullPath = join(startPath, ...backSegments, ...pathParts);
27
+ return await readFile(fullPath, 'utf8');
28
+ }
29
+ else {
30
+ const dirPath = currentFile.slice(0, currentFile.lastIndexOf(sep));
31
+ const contents = await readFile(join(dirPath, ...backSegments, ...pathParts), 'utf8');
32
+ return contents;
33
+ }
34
+ }
35
+ //# sourceMappingURL=readRelative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readRelative.js","sourceRoot":"","sources":["../../src/readRelative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAEhC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,QAAgB,EAChB,SAAmB;IAEnB,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE/C,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QAClE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;QAClD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,CAAC,CAAA;QAC/D,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QAClE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,CAAC,EAAE,MAAM,CAAC,CAAA;QACrF,OAAO,QAAQ,CAAA;IACjB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloud-copilot/cli",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "A standardized library for CLI building TypeScript CLI applications",
5
5
  "repository": {
6
6
  "type": "git",