@decaf-ts/cli 0.4.3 → 0.4.5

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 (63) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.cjs +1 -1
  3. package/dist/cli.cjs.map +1 -1
  4. package/dist/cli.js +1 -1
  5. package/dist/cli.js.map +1 -1
  6. package/lib/CliWrapper.cjs +209 -90
  7. package/lib/CliWrapper.d.ts +28 -4
  8. package/lib/CliWrapper.js.map +1 -1
  9. package/lib/banners.cjs +194 -0
  10. package/lib/banners.d.ts +3 -0
  11. package/lib/banners.js.map +1 -0
  12. package/lib/demo/cli-module.cjs +9 -39
  13. package/lib/demo/cli-module.d.ts +0 -33
  14. package/lib/demo/cli-module.js.map +1 -1
  15. package/lib/environment.cjs +17 -0
  16. package/lib/environment.d.ts +17 -0
  17. package/lib/environment.js.map +1 -0
  18. package/lib/esm/CliWrapper.d.ts +28 -4
  19. package/lib/esm/CliWrapper.js +210 -91
  20. package/lib/esm/CliWrapper.js.map +1 -1
  21. package/lib/esm/banners.d.ts +3 -0
  22. package/lib/esm/banners.js +191 -0
  23. package/lib/esm/banners.js.map +1 -0
  24. package/lib/esm/demo/cli-module.d.ts +0 -33
  25. package/lib/esm/demo/cli-module.js +9 -39
  26. package/lib/esm/demo/cli-module.js.map +1 -1
  27. package/lib/esm/environment.d.ts +17 -0
  28. package/lib/esm/environment.js +11 -0
  29. package/lib/esm/environment.js.map +1 -0
  30. package/lib/esm/index.d.ts +1 -0
  31. package/lib/esm/index.js +1 -0
  32. package/lib/esm/index.js.map +1 -1
  33. package/lib/esm/logging.d.ts +3 -0
  34. package/lib/esm/logging.js +16 -0
  35. package/lib/esm/logging.js.map +1 -0
  36. package/lib/esm/slogans.d.ts +40 -0
  37. package/lib/esm/slogans.js +142 -0
  38. package/lib/esm/slogans.js.map +1 -0
  39. package/lib/esm/utils-module/cli-module.d.ts +2 -0
  40. package/lib/esm/utils-module/cli-module.js +77 -0
  41. package/lib/esm/utils-module/cli-module.js.map +1 -0
  42. package/lib/esm/utils.js +1 -1
  43. package/lib/esm/utils.js.map +1 -1
  44. package/lib/esm/version.d.ts +1 -1
  45. package/lib/esm/version.js +1 -1
  46. package/lib/index.cjs +1 -0
  47. package/lib/index.d.ts +1 -0
  48. package/lib/index.js.map +1 -1
  49. package/lib/logging.cjs +19 -0
  50. package/lib/logging.d.ts +3 -0
  51. package/lib/logging.js.map +1 -0
  52. package/lib/slogans.cjs +150 -0
  53. package/lib/slogans.d.ts +40 -0
  54. package/lib/slogans.js.map +1 -0
  55. package/lib/utils-module/cli-module.cjs +83 -0
  56. package/lib/utils-module/cli-module.d.ts +2 -0
  57. package/lib/utils-module/cli-module.js.map +1 -0
  58. package/lib/utils.cjs +1 -1
  59. package/lib/utils.js.map +1 -1
  60. package/lib/version.cjs +1 -1
  61. package/lib/version.d.ts +1 -1
  62. package/package.json +3 -2
  63. package/workdocs/assets/slogans.json +194 -0
@@ -1,35 +1,2 @@
1
1
  import { Command } from "commander";
2
- /**
3
- * @description Demo CLI module for Decaf libraries
4
- * @summary A minimal implementation showing how to extend the Decaf CLI with custom commands.
5
- * This module demonstrates the pattern for creating CLI modules that can be discovered and loaded by the Decaf CLI.
6
- *
7
- * @return {Command} The Command object to be added to the main Decaf CLI
8
- *
9
- * @function demo
10
- * @memberOf module:CLI
11
- *
12
- * @example
13
- * // Run the demo command with an argument
14
- * npx decaf demo command "something something"
15
- *
16
- * // Output:
17
- * // executed demo command with type variable: something something
18
- *
19
- * @mermaid
20
- * sequenceDiagram
21
- * participant User
22
- * participant CLI
23
- * participant DemoModule
24
- * participant Command
25
- *
26
- * User->>CLI: npx decaf demo command "arg"
27
- * CLI->>DemoModule: Load module
28
- * DemoModule->>Command: Create command
29
- * Command->>Command: Configure action
30
- * Command-->>DemoModule: Return command
31
- * DemoModule-->>CLI: Return command
32
- * CLI->>Command: Execute with args
33
- * Command->>Console: Log output
34
- */
35
2
  export default function demo(): Command;
@@ -1,43 +1,13 @@
1
1
  import { Command } from "commander";
2
- /**
3
- * @description Demo CLI module for Decaf libraries
4
- * @summary A minimal implementation showing how to extend the Decaf CLI with custom commands.
5
- * This module demonstrates the pattern for creating CLI modules that can be discovered and loaded by the Decaf CLI.
6
- *
7
- * @return {Command} The Command object to be added to the main Decaf CLI
8
- *
9
- * @function demo
10
- * @memberOf module:CLI
11
- *
12
- * @example
13
- * // Run the demo command with an argument
14
- * npx decaf demo command "something something"
15
- *
16
- * // Output:
17
- * // executed demo command with type variable: something something
18
- *
19
- * @mermaid
20
- * sequenceDiagram
21
- * participant User
22
- * participant CLI
23
- * participant DemoModule
24
- * participant Command
25
- *
26
- * User->>CLI: npx decaf demo command "arg"
27
- * CLI->>DemoModule: Load module
28
- * DemoModule->>Command: Create command
29
- * Command->>Command: Configure action
30
- * Command-->>DemoModule: Return command
31
- * DemoModule-->>CLI: Return command
32
- * CLI->>Command: Execute with args
33
- * Command->>Console: Log output
34
- */
2
+ const runCommand = new Command("command")
3
+ .description("A demo command")
4
+ .argument("<type>")
5
+ .action(async (type) => {
6
+ console.log(`executed demo command with type variable: ${type}`);
7
+ });
35
8
  export default function demo() {
36
- return new Command()
37
- .command("command <type>")
38
- .description("A demo command")
39
- .action((args) => {
40
- console.log(`executed demo command with type variable: ${args}`);
41
- });
9
+ const demoCommand = new Command("demo").description("Demo commands");
10
+ demoCommand.addCommand(runCommand);
11
+ return demoCommand;
42
12
  }
43
13
  //# sourceMappingURL=cli-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-module.js","sourceRoot":"","sources":["../../../src/demo/cli-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI;IAC1B,OAAO,IAAI,OAAO,EAAE;SACjB,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,gBAAgB,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,6CAA6C,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"cli-module.js","sourceRoot":"","sources":["../../../src/demo/cli-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACtC,WAAW,CAAC,gBAAgB,CAAC;KAC7B,QAAQ,CAAC,QAAQ,CAAC;KAClB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,OAAO,CAAC,GAAG,CAAC,6CAA6C,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,OAAO,UAAU,IAAI;IAC1B,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACrE,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACnC,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { LoggingConfig } from "@decaf-ts/logging";
2
+ export type DecafCliEnvironment = LoggingConfig & {
3
+ banner: boolean;
4
+ cliModuleRoot: string;
5
+ };
6
+ export declare const DefaultCliEnvironment: DecafCliEnvironment;
7
+ export declare const DecafCLieEnvironment: object & LoggingConfig & {
8
+ env: any;
9
+ } & {
10
+ banner: boolean;
11
+ cliModuleRoot: string;
12
+ } & import("typed-object-accumulator").ObjectAccumulator<object & LoggingConfig & {
13
+ env: any;
14
+ } & {
15
+ banner: boolean;
16
+ cliModuleRoot: string;
17
+ }>;
@@ -0,0 +1,11 @@
1
+ import path from "path";
2
+ import { LoggedEnvironment } from "@decaf-ts/logging";
3
+ const cliModuleRoot = process.env.CLI_MODULE_TOOT && process.env.CLI_MODULE_TOOT.length > 0
4
+ ? path.resolve(process.env.CLI_MODULE_TOOT)
5
+ : process.cwd();
6
+ export const DefaultCliEnvironment = {
7
+ banner: true,
8
+ cliModuleRoot,
9
+ };
10
+ export const DecafCLieEnvironment = LoggedEnvironment.accumulate(DefaultCliEnvironment);
11
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/environment.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAiB,MAAM,mBAAmB,CAAC;AAOrE,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;IACnE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC3C,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAEpB,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,MAAM,EAAE,IAAI;IACZ,aAAa;CACS,CAAC;AAEzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,UAAU,CAC9D,qBAAqB,CACtB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from "./CliWrapper";
2
+ export * from "./environment";
2
3
  /**
3
4
  * @description Decaf-ts' CLI module
4
5
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
package/lib/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./CliWrapper.js";
2
+ export * from "./environment.js";
2
3
  /**
3
4
  * @description Decaf-ts' CLI module
4
5
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gCAA6B;AAE7B;;;;;;;;;;;;;GAaG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gCAA6B;AAC7B,iCAA8B;AAC9B;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import { Logger } from "@decaf-ts/logging";
3
+ export declare function getCmdLogger(cmd: Command): Logger;
@@ -0,0 +1,16 @@
1
+ import { Logging } from "@decaf-ts/logging";
2
+ export function getCmdLogger(cmd) {
3
+ const inheritance = [cmd];
4
+ let parent = cmd.parent;
5
+ while (parent) {
6
+ inheritance.push(parent);
7
+ parent = parent.parent;
8
+ }
9
+ if (!parent)
10
+ throw new Error("Outshot the root parent. should not be possible");
11
+ const log = inheritance.reverse().reduce((accum, el) => {
12
+ return accum.for(el.name);
13
+ }, Logging.get());
14
+ return log;
15
+ }
16
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,MAAM,WAAW,GAAU,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,OAAO,MAAM,EAAE,CAAC;QACd,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,MAAM;QACT,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,KAAa,EAAE,EAAE,EAAE,EAAE;QAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { Logger } from "@decaf-ts/logging";
2
+ /**
3
+ * @description Reads and parses slogans from workdocs/assets/slogans.json.
4
+ * @summary Attempts to read a slogans.json file from the workdocs/assets directory at the given base path and returns its parsed contents as an array.
5
+ *
6
+ * @param {string} basePath - The base directory path where workdocs/assets/slogans.json should exist.
7
+ * @return {any[] | undefined} The parsed array from slogans.json, or undefined if the file doesn't exist.
8
+ *
9
+ * @function readSlogans
10
+ *
11
+ * @memberOf module:utils
12
+ */
13
+ export declare function readSlogans(log: Logger, basePath: string): {
14
+ Slogan: string;
15
+ }[] | undefined;
16
+ /**
17
+ * @description Collects slogans from a base path and all @decaf scoped packages.
18
+ * @summary Recursively collects slogans.json files from the given base path and all subdirectories under node_modules/@decaf/*. Results are stored in an object keyed by the package name (from package.json).
19
+ *
20
+ * @param {string} basePath - The base directory path to start collecting from.
21
+ * @return {Record<string, any[]>} An object mapping package names to their slogans arrays.
22
+ *
23
+ * @function collectSlogans
24
+ *
25
+ * @memberOf module:utils
26
+ */
27
+ export declare function collectSlogans(log: Logger, basePath: string): Record<string, any[]>;
28
+ /**
29
+ * @description Flattens collected slogans with weighted selection for a priority package.
30
+ * @summary Given a collection of slogans and a priority package name, returns a flat array where slogans from the priority package have a 30-40% chance of appearing at any given position.
31
+ *
32
+ * @param {Record<string, any[]>} slogansMap - Object mapping package names to slogan arrays.
33
+ * @param {string} priorityPackage - The package name whose slogans should be prioritized.
34
+ * @return {any[]} A flat array of all slogans with weighted distribution.
35
+ *
36
+ * @function flattenSlogansWithPriority
37
+ *
38
+ * @memberOf module:utils
39
+ */
40
+ export declare function flattenSlogansWithPriority(log: Logger, slogansMap: Record<string, any[]>, priorityPackage: string): any[];
@@ -0,0 +1,142 @@
1
+ import path from "path";
2
+ import fs from "fs";
3
+ import { getPackage } from "@decaf-ts/utils";
4
+ /**
5
+ * @description Reads and parses slogans from workdocs/assets/slogans.json.
6
+ * @summary Attempts to read a slogans.json file from the workdocs/assets directory at the given base path and returns its parsed contents as an array.
7
+ *
8
+ * @param {string} basePath - The base directory path where workdocs/assets/slogans.json should exist.
9
+ * @return {any[] | undefined} The parsed array from slogans.json, or undefined if the file doesn't exist.
10
+ *
11
+ * @function readSlogans
12
+ *
13
+ * @memberOf module:utils
14
+ */
15
+ export function readSlogans(log, basePath) {
16
+ log = log.for(readSlogans);
17
+ const slogansPath = path.join(basePath, "workdocs", "assets", "slogans.json");
18
+ try {
19
+ if (!fs.existsSync(slogansPath)) {
20
+ return undefined;
21
+ }
22
+ const content = fs.readFileSync(slogansPath);
23
+ return JSON.parse(content.toString());
24
+ }
25
+ catch (error) {
26
+ log.error(`Failed to read slogans from ${slogansPath}`, error);
27
+ return undefined;
28
+ }
29
+ }
30
+ /**
31
+ * @description Collects slogans from a base path and all @decaf scoped packages.
32
+ * @summary Recursively collects slogans.json files from the given base path and all subdirectories under node_modules/@decaf/*. Results are stored in an object keyed by the package name (from package.json).
33
+ *
34
+ * @param {string} basePath - The base directory path to start collecting from.
35
+ * @return {Record<string, any[]>} An object mapping package names to their slogans arrays.
36
+ *
37
+ * @function collectSlogans
38
+ *
39
+ * @memberOf module:utils
40
+ */
41
+ export function collectSlogans(log, basePath) {
42
+ log = log.for(collectSlogans);
43
+ const result = {};
44
+ // Read slogans for the base path
45
+ const baseSlogans = readSlogans(log, basePath);
46
+ if (baseSlogans) {
47
+ try {
48
+ const pkgName = getPackage(basePath, "name");
49
+ result[pkgName] = baseSlogans;
50
+ log.verbose(`Collected ${baseSlogans.length} slogans from ${pkgName}`);
51
+ }
52
+ catch (error) {
53
+ log.verbose(`Failed to get package name for base path: ${error}`);
54
+ }
55
+ }
56
+ // Check for @decaf/* packages in node_modules
57
+ const decafModulesPath = path.join(basePath, "node_modules", "@decaf-ts");
58
+ if (fs.existsSync(decafModulesPath)) {
59
+ try {
60
+ const decafPackages = fs.readdirSync(decafModulesPath, {
61
+ withFileTypes: true,
62
+ });
63
+ for (const pkg of decafPackages) {
64
+ if (!pkg.isDirectory())
65
+ continue;
66
+ const pkgPath = path.join(decafModulesPath, pkg.name);
67
+ const pkgSlogans = readSlogans(log, pkgPath);
68
+ if (pkgSlogans) {
69
+ try {
70
+ const pkgName = getPackage(pkgPath, "name");
71
+ result[pkgName] = pkgSlogans;
72
+ log.verbose(`Collected ${pkgSlogans.length} slogans from ${pkgName}`);
73
+ }
74
+ catch (error) {
75
+ log.verbose(`Failed to get package name for ${pkgPath}: ${error}`);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ catch (error) {
81
+ log.verbose(`Error reading @decaf-ts modules: ${error}`);
82
+ }
83
+ }
84
+ return result;
85
+ }
86
+ /**
87
+ * @description Flattens collected slogans with weighted selection for a priority package.
88
+ * @summary Given a collection of slogans and a priority package name, returns a flat array where slogans from the priority package have a 30-40% chance of appearing at any given position.
89
+ *
90
+ * @param {Record<string, any[]>} slogansMap - Object mapping package names to slogan arrays.
91
+ * @param {string} priorityPackage - The package name whose slogans should be prioritized.
92
+ * @return {any[]} A flat array of all slogans with weighted distribution.
93
+ *
94
+ * @function flattenSlogansWithPriority
95
+ *
96
+ * @memberOf module:utils
97
+ */
98
+ export function flattenSlogansWithPriority(log, slogansMap, priorityPackage) {
99
+ log = log.for(flattenSlogansWithPriority);
100
+ const result = [];
101
+ const prioritySlogans = slogansMap[priorityPackage] || [];
102
+ const otherSlogans = [];
103
+ // Collect all non-priority slogans
104
+ for (const [pkgName, slogans] of Object.entries(slogansMap)) {
105
+ if (pkgName === priorityPackage)
106
+ continue;
107
+ otherSlogans.push(...slogans);
108
+ }
109
+ if (prioritySlogans.length === 0 && otherSlogans.length === 0) {
110
+ log.error("No slogans found to flatten");
111
+ return result;
112
+ }
113
+ if (prioritySlogans.length === 0) {
114
+ log.verbose(`package "${priorityPackage}" has no slogans, returning all other slogans`);
115
+ return otherSlogans;
116
+ }
117
+ if (otherSlogans.length === 0) {
118
+ log.debug("Only priority slogans available, returning them");
119
+ return prioritySlogans;
120
+ }
121
+ // Interleave with 30-40% chance for priority slogans
122
+ let priorityIndex = 0;
123
+ let otherIndex = 0;
124
+ const priorityWeight = 0.35; // 35% average chance
125
+ while (priorityIndex < prioritySlogans.length ||
126
+ otherIndex < otherSlogans.length) {
127
+ const usePriority = Math.random() < priorityWeight;
128
+ if (usePriority && priorityIndex < prioritySlogans.length) {
129
+ result.push(prioritySlogans[priorityIndex++]);
130
+ }
131
+ else if (otherIndex < otherSlogans.length) {
132
+ result.push(otherSlogans[otherIndex++]);
133
+ }
134
+ else if (priorityIndex < prioritySlogans.length) {
135
+ // Only priority slogans left
136
+ result.push(prioritySlogans[priorityIndex++]);
137
+ }
138
+ }
139
+ log.debug(`Flattened ${result.length} slogans with priority for "${priorityPackage}"`);
140
+ return result;
141
+ }
142
+ //# sourceMappingURL=slogans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slogans.js","sourceRoot":"","sources":["../../src/slogans.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export default function utils(): Command;
@@ -0,0 +1,77 @@
1
+ import { Command } from "commander";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { getCmdLogger } from "./../logging.js";
5
+ import { Metadata } from "@decaf-ts/decoration";
6
+ import { CliWrapper } from "./../CliWrapper.js";
7
+ import { toENVFormat } from "@decaf-ts/logging";
8
+ const libraries = new Command()
9
+ .name("libraries")
10
+ .description("outputs the installed decaf-ts libraries and their versions")
11
+ .option("--format [String]", "additional output formats (json, raw)")
12
+ .action(async (options) => {
13
+ const pkg = JSON.parse(fs.readFileSync(path.join(process.cwd(), "package.json"), "utf-8"));
14
+ const version = pkg.version;
15
+ const log = getCmdLogger(libraries);
16
+ log.debug(`running with options: ${JSON.stringify(options)} for ${pkg.name} version ${version}`);
17
+ const { format } = options;
18
+ const libs = Metadata.libraries();
19
+ switch (format) {
20
+ case "json":
21
+ console.log(JSON.stringify(libs, null, 2));
22
+ break;
23
+ case "raw":
24
+ Object.entries(libs).forEach(([key, value]) => console.log(`${key}: ${value}`));
25
+ break;
26
+ default:
27
+ Object.entries(libs).forEach(([key, value]) => log.info(`${key}: ${value}`));
28
+ }
29
+ });
30
+ const environmentExport = new Command()
31
+ .name("environment-export")
32
+ .description("outputs currently enforced environment")
33
+ .option("--format [String]", "additional output formats (json, raw)")
34
+ .action(async (options) => {
35
+ const pkg = JSON.parse(fs.readFileSync(path.join(process.cwd(), "package.json"), "utf-8"));
36
+ const version = pkg.version;
37
+ const log = getCmdLogger(environmentExport);
38
+ log.debug(`running with options: ${JSON.stringify(options)} for ${pkg.name} version ${version}`);
39
+ const { format } = options;
40
+ const env = CliWrapper.getEnv();
41
+ const flatten = (accum, obj, prefix = "") => {
42
+ Object.entries(obj).forEach(([key, value]) => {
43
+ const envKey = toENVFormat(key);
44
+ const fullKey = prefix ? `${prefix}__${envKey}` : envKey;
45
+ if (value && typeof value === "object" && !Array.isArray(value)) {
46
+ flatten(accum, value, fullKey);
47
+ }
48
+ else {
49
+ accum.push(`${fullKey}=${value}`);
50
+ }
51
+ });
52
+ };
53
+ switch (format) {
54
+ case "json":
55
+ console.log(JSON.stringify(env, null, 2));
56
+ break;
57
+ case "raw": {
58
+ const str = [];
59
+ flatten(str, env);
60
+ console.log(str.join("\n"));
61
+ break;
62
+ }
63
+ default: {
64
+ const str = [];
65
+ flatten(str, env);
66
+ str.forEach((s) => log.info(s));
67
+ }
68
+ }
69
+ });
70
+ export default function utils() {
71
+ const utilsCmd = new Command()
72
+ .command("utils")
73
+ .description("utilitarian cli commands for the decaf-ts framework");
74
+ utilsCmd.addCommand(libraries);
75
+ return utilsCmd;
76
+ }
77
+ //# sourceMappingURL=cli-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-module.js","sourceRoot":"","sources":["../../../src/utils-module/cli-module.ts"],"names":[],"mappings":"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"}
package/lib/esm/utils.js CHANGED
@@ -54,7 +54,7 @@ export class CLIUtils {
54
54
  static initialize(command, basePath) {
55
55
  const name = CLIUtils.packageName(basePath);
56
56
  command
57
- .name(name)
57
+ .name("decaf")
58
58
  .description(`Runs ${name} related commands`)
59
59
  .version(CLIUtils.packageVersion(basePath));
60
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,QAAQ;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAI,aAAyB;QACvD,mEAAmE;QACnE,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,CAAU,EAAE,EAAE,CAAC,CAAE,CAAoB,CAAC,OAAO,IAAI,CAAC,CAAM,CAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,OAAgB,EAAE,QAAgB;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO;aACJ,IAAI,CAAC,IAAI,CAAC;aACV,WAAW,CAAC,QAAQ,IAAI,mBAAmB,CAAC;aAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CAAC,QAAgB;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CACf,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAW,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,MAAM,IAAI,GAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,QAAQ;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAI,aAAyB;QACvD,mEAAmE;QACnE,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,CAAU,EAAE,EAAE,CAAC,CAAE,CAAoB,CAAC,OAAO,IAAI,CAAC,CAAM,CAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,OAAgB,EAAE,QAAgB;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO;aACJ,IAAI,CAAC,OAAO,CAAC;aACb,WAAW,CAAC,QAAQ,IAAI,mBAAmB,CAAC;aAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CAAC,QAAgB;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CACf,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAW,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,MAAM,IAAI,GAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -4,7 +4,7 @@
4
4
  * @const VERSION
5
5
  * @memberOf module:CLI
6
6
  */
7
- export declare const VERSION = "0.4.2";
7
+ export declare const VERSION = "0.4.4";
8
8
  /**
9
9
  * @description Stores the current package version
10
10
  * @summary A constant that holds the version string of the package, which is replaced during build
@@ -5,7 +5,7 @@ import { Metadata } from "@decaf-ts/decoration";
5
5
  * @const VERSION
6
6
  * @memberOf module:CLI
7
7
  */
8
- export const VERSION = "0.4.2";
8
+ export const VERSION = "0.4.4";
9
9
  /**
10
10
  * @description Stores the current package version
11
11
  * @summary A constant that holds the version string of the package, which is replaced during build
package/lib/index.cjs CHANGED
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./CliWrapper.cjs"), exports);
18
+ __exportStar(require("./environment.cjs"), exports);
18
19
  /**
19
20
  * @description Decaf-ts' CLI module
20
21
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
package/lib/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./CliWrapper";
2
+ export * from "./environment";
2
3
  /**
3
4
  * @description Decaf-ts' CLI module
4
5
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAA6B;AAE7B;;;;;;;;;;;;;GAaG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAA6B;AAC7B,oDAA8B;AAC9B;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCmdLogger = getCmdLogger;
4
+ const logging_1 = require("@decaf-ts/logging");
5
+ function getCmdLogger(cmd) {
6
+ const inheritance = [cmd];
7
+ let parent = cmd.parent;
8
+ while (parent) {
9
+ inheritance.push(parent);
10
+ parent = parent.parent;
11
+ }
12
+ if (!parent)
13
+ throw new Error("Outshot the root parent. should not be possible");
14
+ const log = inheritance.reverse().reduce((accum, el) => {
15
+ return accum.for(el.name);
16
+ }, logging_1.Logging.get());
17
+ return log;
18
+ }
19
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import { Logger } from "@decaf-ts/logging";
3
+ export declare function getCmdLogger(cmd: Command): Logger;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":";;AAGA,oCAaC;AAfD,+CAAoD;AAEpD,SAAgB,YAAY,CAAC,GAAY;IACvC,MAAM,WAAW,GAAU,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,OAAO,MAAM,EAAE,CAAC;QACd,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,MAAM;QACT,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,KAAa,EAAE,EAAE,EAAE,EAAE;QAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,iBAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC"}