@tsonic/cli 0.0.1

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 (82) hide show
  1. package/dist/cli/constants.d.ts +5 -0
  2. package/dist/cli/constants.d.ts.map +1 -0
  3. package/dist/cli/constants.js +5 -0
  4. package/dist/cli/constants.js.map +1 -0
  5. package/dist/cli/dispatcher.d.ts +8 -0
  6. package/dist/cli/dispatcher.d.ts.map +1 -0
  7. package/dist/cli/dispatcher.js +111 -0
  8. package/dist/cli/dispatcher.js.map +1 -0
  9. package/dist/cli/help.d.ts +8 -0
  10. package/dist/cli/help.d.ts.map +1 -0
  11. package/dist/cli/help.js +55 -0
  12. package/dist/cli/help.js.map +1 -0
  13. package/dist/cli/index.d.ts +8 -0
  14. package/dist/cli/index.d.ts.map +1 -0
  15. package/dist/cli/index.js +8 -0
  16. package/dist/cli/index.js.map +1 -0
  17. package/dist/cli/parser.d.ts +14 -0
  18. package/dist/cli/parser.d.ts.map +1 -0
  19. package/dist/cli/parser.js +113 -0
  20. package/dist/cli/parser.js.map +1 -0
  21. package/dist/cli/parser.test.d.ts +5 -0
  22. package/dist/cli/parser.test.d.ts.map +1 -0
  23. package/dist/cli/parser.test.js +221 -0
  24. package/dist/cli/parser.test.js.map +1 -0
  25. package/dist/cli.d.ts +6 -0
  26. package/dist/cli.d.ts.map +1 -0
  27. package/dist/cli.js +6 -0
  28. package/dist/cli.js.map +1 -0
  29. package/dist/commands/build.d.ts +11 -0
  30. package/dist/commands/build.d.ts.map +1 -0
  31. package/dist/commands/build.js +214 -0
  32. package/dist/commands/build.js.map +1 -0
  33. package/dist/commands/emit.d.ts +12 -0
  34. package/dist/commands/emit.d.ts.map +1 -0
  35. package/dist/commands/emit.js +311 -0
  36. package/dist/commands/emit.js.map +1 -0
  37. package/dist/commands/init.d.ts +15 -0
  38. package/dist/commands/init.d.ts.map +1 -0
  39. package/dist/commands/init.js +270 -0
  40. package/dist/commands/init.js.map +1 -0
  41. package/dist/commands/pack.d.ts +11 -0
  42. package/dist/commands/pack.d.ts.map +1 -0
  43. package/dist/commands/pack.js +92 -0
  44. package/dist/commands/pack.js.map +1 -0
  45. package/dist/commands/run.d.ts +11 -0
  46. package/dist/commands/run.d.ts.map +1 -0
  47. package/dist/commands/run.js +40 -0
  48. package/dist/commands/run.js.map +1 -0
  49. package/dist/config.d.ts +17 -0
  50. package/dist/config.d.ts.map +1 -0
  51. package/dist/config.js +160 -0
  52. package/dist/config.js.map +1 -0
  53. package/dist/config.test.d.ts +5 -0
  54. package/dist/config.test.d.ts.map +1 -0
  55. package/dist/config.test.js +283 -0
  56. package/dist/config.test.js.map +1 -0
  57. package/dist/index.d.ts +8 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +20 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/types.d.ts +111 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +5 -0
  64. package/dist/types.js.map +1 -0
  65. package/package.json +38 -0
  66. package/src/cli/constants.ts +5 -0
  67. package/src/cli/dispatcher.ts +129 -0
  68. package/src/cli/help.ts +56 -0
  69. package/src/cli/index.ts +8 -0
  70. package/src/cli/parser.test.ts +259 -0
  71. package/src/cli/parser.ts +128 -0
  72. package/src/cli.ts +6 -0
  73. package/src/commands/build.ts +264 -0
  74. package/src/commands/emit.ts +406 -0
  75. package/src/commands/init.ts +334 -0
  76. package/src/commands/pack.ts +114 -0
  77. package/src/commands/run.ts +51 -0
  78. package/src/config.test.ts +337 -0
  79. package/src/config.ts +205 -0
  80. package/src/index.ts +23 -0
  81. package/src/types.ts +121 -0
  82. package/tsconfig.json +18 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * CLI constants
3
+ */
4
+ export declare const VERSION = "0.0.1";
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * CLI constants
3
+ */
4
+ export const VERSION = "0.0.1";
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI command dispatcher
3
+ */
4
+ /**
5
+ * Main CLI entry point
6
+ */
7
+ export declare const runCli: (args: string[]) => Promise<number>;
8
+ //# sourceMappingURL=dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/cli/dispatcher.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH;;GAEG;AACH,eAAO,MAAM,MAAM,GAAU,MAAM,MAAM,EAAE,KAAG,OAAO,CAAC,MAAM,CA6G3D,CAAC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * CLI command dispatcher
3
+ */
4
+ import { join } from "node:path";
5
+ import { checkDotnetInstalled } from "@tsonic/backend";
6
+ import { loadConfig, findConfig, resolveConfig } from "../config.js";
7
+ import { initProject } from "../commands/init.js";
8
+ import { emitCommand } from "../commands/emit.js";
9
+ import { buildCommand } from "../commands/build.js";
10
+ import { runCommand } from "../commands/run.js";
11
+ import { packCommand } from "../commands/pack.js";
12
+ import { VERSION } from "./constants.js";
13
+ import { showHelp } from "./help.js";
14
+ import { parseArgs } from "./parser.js";
15
+ /**
16
+ * Main CLI entry point
17
+ */
18
+ export const runCli = async (args) => {
19
+ const parsed = parseArgs(args);
20
+ // Handle version and help
21
+ if (parsed.command === "version") {
22
+ console.log(`tsonic v${VERSION}`);
23
+ return 0;
24
+ }
25
+ if (parsed.command === "help" || !parsed.command) {
26
+ showHelp();
27
+ return 0;
28
+ }
29
+ // Handle project init (doesn't need config)
30
+ if (parsed.command === "project:init") {
31
+ const result = initProject(process.cwd(), {
32
+ runtime: parsed.options.runtime,
33
+ skipTypes: parsed.options.skipTypes,
34
+ typesVersion: parsed.options.typesVersion,
35
+ });
36
+ if (!result.ok) {
37
+ console.error(`Error: ${result.error}`);
38
+ return 1;
39
+ }
40
+ console.log("✓ Initialized Tsonic project");
41
+ console.log(" Created: tsonic.json");
42
+ console.log(" Created/Updated: .gitignore");
43
+ console.log("\nNext steps:");
44
+ console.log(" 1. Edit tsonic.json to configure your project");
45
+ console.log(" 2. Create src/main.ts");
46
+ console.log(" 3. Run: tsonic build");
47
+ return 0;
48
+ }
49
+ // Check for dotnet
50
+ const dotnetResult = checkDotnetInstalled();
51
+ if (!dotnetResult.ok) {
52
+ console.error("Error: .NET SDK not found");
53
+ console.error("Install from: https://dotnet.microsoft.com/download");
54
+ return 8;
55
+ }
56
+ // Load config
57
+ const configPath = parsed.options.config
58
+ ? join(process.cwd(), parsed.options.config)
59
+ : findConfig(process.cwd());
60
+ if (!configPath) {
61
+ console.error("Error: No tsonic.json found");
62
+ console.error("Run 'tsonic project init' to initialize a project");
63
+ return 3;
64
+ }
65
+ const configResult = loadConfig(configPath);
66
+ if (!configResult.ok) {
67
+ console.error(`Error: ${configResult.error}`);
68
+ return 1;
69
+ }
70
+ const config = resolveConfig(configResult.value, parsed.options, parsed.entryFile);
71
+ // Dispatch to command handlers
72
+ switch (parsed.command) {
73
+ case "emit": {
74
+ const result = emitCommand(config);
75
+ if (!result.ok) {
76
+ console.error(`Error: ${result.error}`);
77
+ return 5;
78
+ }
79
+ return 0;
80
+ }
81
+ case "build": {
82
+ const result = buildCommand(config);
83
+ if (!result.ok) {
84
+ console.error(`Error: ${result.error}`);
85
+ return 6;
86
+ }
87
+ return 0;
88
+ }
89
+ case "run": {
90
+ const result = runCommand(config, parsed.programArgs ?? []);
91
+ if (!result.ok) {
92
+ console.error(`Error: ${result.error}`);
93
+ return 7;
94
+ }
95
+ return result.value.exitCode;
96
+ }
97
+ case "pack": {
98
+ const result = packCommand(config);
99
+ if (!result.ok) {
100
+ console.error(`Error: ${result.error}`);
101
+ return 9;
102
+ }
103
+ return 0;
104
+ }
105
+ default:
106
+ console.error(`Error: Unknown command '${parsed.command}'`);
107
+ console.error("Run 'tsonic --help' for usage information");
108
+ return 2;
109
+ }
110
+ };
111
+ //# sourceMappingURL=dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/cli/dispatcher.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAc,EAAmB,EAAE;IAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/B,0BAA0B;IAC1B,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjD,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAM,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACxC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;YAC/B,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;YACnC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,cAAc;IACd,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;QACtC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,UAAU,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAC1B,YAAY,CAAC,KAAK,EAClB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,CACjB,CAAC;IAEF,+BAA+B;IAC/B,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC/B,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED;YACE,OAAO,CAAC,KAAK,CAAC,2BAA2B,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;YAC5D,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI help message
3
+ */
4
+ /**
5
+ * Show help message
6
+ */
7
+ export declare const showHelp: () => void;
8
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,eAAO,MAAM,QAAQ,QAAO,IA8C3B,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * CLI help message
3
+ */
4
+ import { VERSION } from "./constants.js";
5
+ /**
6
+ * Show help message
7
+ */
8
+ export const showHelp = () => {
9
+ console.log(`
10
+ Tsonic - TypeScript to C# to NativeAOT compiler v${VERSION}
11
+
12
+ USAGE:
13
+ tsonic <command> [options]
14
+
15
+ COMMANDS:
16
+ project init Initialize a new Tsonic project
17
+ emit [entry] Generate C# code only
18
+ build [entry] Build native executable
19
+ run [entry] [-- args...] Build and run executable
20
+
21
+ GLOBAL OPTIONS:
22
+ -h, --help Show help
23
+ -v, --version Show version
24
+ -V, --verbose Verbose output
25
+ -q, --quiet Suppress output
26
+ -c, --config <file> Config file path (default: tsonic.json)
27
+ --runtime <mode> Runtime mode: js (default) or dotnet
28
+
29
+ EMIT/BUILD/RUN OPTIONS:
30
+ -s, --src <dir> Source root directory
31
+ -o, --out <path> Output directory (emit) or file (build)
32
+ -n, --namespace <ns> Root namespace override
33
+ -r, --rid <rid> Runtime identifier (e.g., linux-x64)
34
+ -O, --optimize <level> Optimization: size or speed
35
+ -k, --keep-temp Keep build artifacts
36
+ --no-strip Keep debug symbols
37
+
38
+ PROJECT INIT OPTIONS:
39
+ --runtime <mode> Runtime mode: js (default) or dotnet
40
+ --skip-types Skip installing type declarations
41
+ --types-version <ver> Version of type declarations to install
42
+
43
+ EXAMPLES:
44
+ tsonic project init
45
+ tsonic project init --runtime dotnet
46
+ tsonic emit src/app.ts
47
+ tsonic build src/app.ts --rid linux-x64
48
+ tsonic run src/app.ts -- --arg1 value1
49
+
50
+ LEARN MORE:
51
+ Documentation: https://tsonic.dev/docs
52
+ GitHub: https://github.com/tsoniclang/tsonic
53
+ `);
54
+ };
55
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAS,EAAE;IACjC,OAAO,CAAC,GAAG,CAAC;mDACqC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CzD,CAAC,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI - Public API
3
+ */
4
+ export { VERSION } from "./constants.js";
5
+ export { showHelp } from "./help.js";
6
+ export { parseArgs } from "./parser.js";
7
+ export { runCli } from "./dispatcher.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI - Public API
3
+ */
4
+ export { VERSION } from "./constants.js";
5
+ export { showHelp } from "./help.js";
6
+ export { parseArgs } from "./parser.js";
7
+ export { runCli } from "./dispatcher.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * CLI argument parser
3
+ */
4
+ import type { CliOptions } from "../types.js";
5
+ /**
6
+ * Parse CLI arguments
7
+ */
8
+ export declare const parseArgs: (args: string[]) => {
9
+ command: string;
10
+ entryFile?: string;
11
+ options: CliOptions;
12
+ programArgs?: string[];
13
+ };
14
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,SAAS,GACpB,MAAM,MAAM,EAAE,KACb;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAgHxB,CAAC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * CLI argument parser
3
+ */
4
+ /**
5
+ * Parse CLI arguments
6
+ */
7
+ export const parseArgs = (args) => {
8
+ const options = {};
9
+ let command = "";
10
+ let entryFile;
11
+ const programArgs = [];
12
+ let captureProgramArgs = false;
13
+ for (let i = 0; i < args.length; i++) {
14
+ const arg = args[i];
15
+ if (!arg)
16
+ continue; // Skip if undefined
17
+ // Separator for program arguments
18
+ if (arg === "--") {
19
+ captureProgramArgs = true;
20
+ continue;
21
+ }
22
+ if (captureProgramArgs) {
23
+ programArgs.push(arg);
24
+ continue;
25
+ }
26
+ // Commands
27
+ if (!command && !arg.startsWith("-")) {
28
+ command = arg;
29
+ // Handle "project init" as two-word command
30
+ const nextArg = args[i + 1];
31
+ if (command === "project" && nextArg === "init") {
32
+ command = "project:init";
33
+ i++;
34
+ }
35
+ continue;
36
+ }
37
+ // Entry file (first non-option after command)
38
+ if (command && !entryFile && !arg.startsWith("-")) {
39
+ entryFile = arg;
40
+ continue;
41
+ }
42
+ // Options
43
+ switch (arg) {
44
+ case "-h":
45
+ case "--help":
46
+ options.verbose = true; // reuse for help flag
47
+ return { command: "help", options: {} };
48
+ case "-v":
49
+ case "--version":
50
+ return { command: "version", options: {} };
51
+ case "-V":
52
+ case "--verbose":
53
+ options.verbose = true;
54
+ break;
55
+ case "-q":
56
+ case "--quiet":
57
+ options.quiet = true;
58
+ break;
59
+ case "-c":
60
+ case "--config":
61
+ options.config = args[++i] ?? "";
62
+ break;
63
+ case "-s":
64
+ case "--src":
65
+ options.src = args[++i] ?? "";
66
+ break;
67
+ case "-o":
68
+ case "--out":
69
+ options.out = args[++i] ?? "";
70
+ break;
71
+ case "-n":
72
+ case "--namespace":
73
+ options.namespace = args[++i] ?? "";
74
+ break;
75
+ case "-r":
76
+ case "--rid":
77
+ options.rid = args[++i] ?? "";
78
+ break;
79
+ case "--runtime":
80
+ options.runtime = (args[++i] ?? "js");
81
+ break;
82
+ case "--skip-types":
83
+ options.skipTypes = true;
84
+ break;
85
+ case "--types-version":
86
+ options.typesVersion = args[++i] ?? "";
87
+ break;
88
+ case "-O":
89
+ case "--optimize":
90
+ options.optimize = (args[++i] ?? "speed");
91
+ break;
92
+ case "-k":
93
+ case "--keep-temp":
94
+ options.keepTemp = true;
95
+ break;
96
+ case "--no-strip":
97
+ options.noStrip = true;
98
+ break;
99
+ case "-L":
100
+ case "--lib":
101
+ {
102
+ const libPath = args[++i] ?? "";
103
+ if (libPath) {
104
+ options.lib = options.lib || [];
105
+ options.lib.push(libPath);
106
+ }
107
+ }
108
+ break;
109
+ }
110
+ }
111
+ return { command, entryFile, options, programArgs };
112
+ };
113
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for CLI argument parser
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=parser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.test.d.ts","sourceRoot":"","sources":["../../src/cli/parser.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Tests for CLI argument parser
3
+ */
4
+ import { describe, it } from "mocha";
5
+ import { expect } from "chai";
6
+ import { parseArgs } from "./parser.js";
7
+ describe("CLI Parser", () => {
8
+ describe("parseArgs", () => {
9
+ describe("Commands", () => {
10
+ it("should parse build command", () => {
11
+ const result = parseArgs(["build"]);
12
+ expect(result.command).to.equal("build");
13
+ });
14
+ it("should parse run command", () => {
15
+ const result = parseArgs(["run"]);
16
+ expect(result.command).to.equal("run");
17
+ });
18
+ it("should parse emit command", () => {
19
+ const result = parseArgs(["emit"]);
20
+ expect(result.command).to.equal("emit");
21
+ });
22
+ it("should parse project:init as two-word command", () => {
23
+ const result = parseArgs(["project", "init"]);
24
+ expect(result.command).to.equal("project:init");
25
+ });
26
+ it("should parse help command from --help", () => {
27
+ const result = parseArgs(["--help"]);
28
+ expect(result.command).to.equal("help");
29
+ });
30
+ it("should parse help command from -h", () => {
31
+ const result = parseArgs(["-h"]);
32
+ expect(result.command).to.equal("help");
33
+ });
34
+ it("should parse version command from --version", () => {
35
+ const result = parseArgs(["--version"]);
36
+ expect(result.command).to.equal("version");
37
+ });
38
+ it("should parse version command from -v", () => {
39
+ const result = parseArgs(["-v"]);
40
+ expect(result.command).to.equal("version");
41
+ });
42
+ });
43
+ describe("Entry File", () => {
44
+ it("should parse entry file after command", () => {
45
+ const result = parseArgs(["run", "index.ts"]);
46
+ expect(result.command).to.equal("run");
47
+ expect(result.entryFile).to.equal("index.ts");
48
+ });
49
+ it("should parse entry file with path", () => {
50
+ const result = parseArgs(["build", "src/main.ts"]);
51
+ expect(result.command).to.equal("build");
52
+ expect(result.entryFile).to.equal("src/main.ts");
53
+ });
54
+ it("should handle no entry file", () => {
55
+ const result = parseArgs(["build"]);
56
+ expect(result.entryFile).to.equal(undefined);
57
+ });
58
+ });
59
+ describe("Options", () => {
60
+ it("should parse --verbose option", () => {
61
+ const result = parseArgs(["build", "--verbose"]);
62
+ expect(result.options.verbose).to.equal(true);
63
+ });
64
+ it("should parse -V short option for verbose", () => {
65
+ const result = parseArgs(["build", "-V"]);
66
+ expect(result.options.verbose).to.equal(true);
67
+ });
68
+ it("should parse --quiet option", () => {
69
+ const result = parseArgs(["build", "--quiet"]);
70
+ expect(result.options.quiet).to.equal(true);
71
+ });
72
+ it("should parse -q short option for quiet", () => {
73
+ const result = parseArgs(["build", "-q"]);
74
+ expect(result.options.quiet).to.equal(true);
75
+ });
76
+ it("should parse --config option with value", () => {
77
+ const result = parseArgs(["build", "--config", "tsonic.json"]);
78
+ expect(result.options.config).to.equal("tsonic.json");
79
+ });
80
+ it("should parse -c short option for config", () => {
81
+ const result = parseArgs(["build", "-c", "custom.json"]);
82
+ expect(result.options.config).to.equal("custom.json");
83
+ });
84
+ it("should parse --src option with value", () => {
85
+ const result = parseArgs(["build", "--src", "source"]);
86
+ expect(result.options.src).to.equal("source");
87
+ });
88
+ it("should parse -s short option for src", () => {
89
+ const result = parseArgs(["build", "-s", "app"]);
90
+ expect(result.options.src).to.equal("app");
91
+ });
92
+ it("should parse --out option with value", () => {
93
+ const result = parseArgs(["build", "--out", "output"]);
94
+ expect(result.options.out).to.equal("output");
95
+ });
96
+ it("should parse -o short option for out", () => {
97
+ const result = parseArgs(["build", "-o", "dist"]);
98
+ expect(result.options.out).to.equal("dist");
99
+ });
100
+ it("should parse --namespace option with value", () => {
101
+ const result = parseArgs(["build", "--namespace", "MyApp"]);
102
+ expect(result.options.namespace).to.equal("MyApp");
103
+ });
104
+ it("should parse -n short option for namespace", () => {
105
+ const result = parseArgs(["build", "-n", "App"]);
106
+ expect(result.options.namespace).to.equal("App");
107
+ });
108
+ it("should parse --rid option with value", () => {
109
+ const result = parseArgs(["build", "--rid", "linux-x64"]);
110
+ expect(result.options.rid).to.equal("linux-x64");
111
+ });
112
+ it("should parse -r short option for rid", () => {
113
+ const result = parseArgs(["build", "-r", "win-x64"]);
114
+ expect(result.options.rid).to.equal("win-x64");
115
+ });
116
+ it("should parse --optimize option with speed", () => {
117
+ const result = parseArgs(["build", "--optimize", "speed"]);
118
+ expect(result.options.optimize).to.equal("speed");
119
+ });
120
+ it("should parse --optimize option with size", () => {
121
+ const result = parseArgs(["build", "--optimize", "size"]);
122
+ expect(result.options.optimize).to.equal("size");
123
+ });
124
+ it("should parse -O short option for optimize", () => {
125
+ const result = parseArgs(["build", "-O", "speed"]);
126
+ expect(result.options.optimize).to.equal("speed");
127
+ });
128
+ it("should parse --keep-temp option", () => {
129
+ const result = parseArgs(["build", "--keep-temp"]);
130
+ expect(result.options.keepTemp).to.equal(true);
131
+ });
132
+ it("should parse -k short option for keep-temp", () => {
133
+ const result = parseArgs(["build", "-k"]);
134
+ expect(result.options.keepTemp).to.equal(true);
135
+ });
136
+ it("should parse --no-strip option", () => {
137
+ const result = parseArgs(["build", "--no-strip"]);
138
+ expect(result.options.noStrip).to.equal(true);
139
+ });
140
+ });
141
+ describe("Program Arguments", () => {
142
+ it("should parse program arguments after --", () => {
143
+ const result = parseArgs(["run", "index.ts", "--", "arg1", "arg2"]);
144
+ expect(result.programArgs).to.deep.equal(["arg1", "arg2"]);
145
+ });
146
+ it("should handle options in program arguments", () => {
147
+ const result = parseArgs([
148
+ "run",
149
+ "index.ts",
150
+ "--",
151
+ "--verbose",
152
+ "-o",
153
+ "out",
154
+ ]);
155
+ expect(result.programArgs).to.deep.equal(["--verbose", "-o", "out"]);
156
+ });
157
+ it("should handle empty program arguments", () => {
158
+ const result = parseArgs(["run", "index.ts"]);
159
+ expect(result.programArgs).to.deep.equal([]);
160
+ });
161
+ });
162
+ describe("Complex Scenarios", () => {
163
+ it("should parse command with entry file and multiple options", () => {
164
+ const result = parseArgs([
165
+ "build",
166
+ "src/main.ts",
167
+ "--namespace",
168
+ "MyApp",
169
+ "--out",
170
+ "dist",
171
+ "--verbose",
172
+ ]);
173
+ expect(result.command).to.equal("build");
174
+ expect(result.entryFile).to.equal("src/main.ts");
175
+ expect(result.options.namespace).to.equal("MyApp");
176
+ expect(result.options.out).to.equal("dist");
177
+ expect(result.options.verbose).to.equal(true);
178
+ });
179
+ it("should parse run command with entry, options, and program args", () => {
180
+ const result = parseArgs([
181
+ "run",
182
+ "index.ts",
183
+ "--verbose",
184
+ "--",
185
+ "programArg1",
186
+ "programArg2",
187
+ ]);
188
+ expect(result.command).to.equal("run");
189
+ expect(result.entryFile).to.equal("index.ts");
190
+ expect(result.options.verbose).to.equal(true);
191
+ expect(result.programArgs).to.deep.equal([
192
+ "programArg1",
193
+ "programArg2",
194
+ ]);
195
+ });
196
+ it("should handle empty args array", () => {
197
+ const result = parseArgs([]);
198
+ expect(result.command).to.equal("");
199
+ expect(result.entryFile).to.equal(undefined);
200
+ expect(result.options).to.deep.equal({});
201
+ expect(result.programArgs).to.deep.equal([]);
202
+ });
203
+ it("should handle mixed short and long options", () => {
204
+ const result = parseArgs([
205
+ "build",
206
+ "-n",
207
+ "App",
208
+ "--out",
209
+ "dist",
210
+ "-V",
211
+ "--keep-temp",
212
+ ]);
213
+ expect(result.options.namespace).to.equal("App");
214
+ expect(result.options.out).to.equal("dist");
215
+ expect(result.options.verbose).to.equal(true);
216
+ expect(result.options.keepTemp).to.equal(true);
217
+ });
218
+ });
219
+ });
220
+ });
221
+ //# sourceMappingURL=parser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../src/cli/parser.test.ts"],"names":[],"mappings":"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"}