@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.
- package/dist/cli/constants.d.ts +5 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +5 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/dispatcher.d.ts +8 -0
- package/dist/cli/dispatcher.d.ts.map +1 -0
- package/dist/cli/dispatcher.js +111 -0
- package/dist/cli/dispatcher.js.map +1 -0
- package/dist/cli/help.d.ts +8 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +55 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parser.d.ts +14 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +113 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/parser.test.d.ts +5 -0
- package/dist/cli/parser.test.d.ts.map +1 -0
- package/dist/cli/parser.test.js +221 -0
- package/dist/cli/parser.test.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/build.d.ts +11 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +214 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/emit.d.ts +12 -0
- package/dist/commands/emit.d.ts.map +1 -0
- package/dist/commands/emit.js +311 -0
- package/dist/commands/emit.js.map +1 -0
- package/dist/commands/init.d.ts +15 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +270 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/pack.d.ts +11 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/commands/pack.js +92 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/commands/run.d.ts +11 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +40 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +160 -0
- package/dist/config.js.map +1 -0
- package/dist/config.test.d.ts +5 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +283 -0
- package/dist/config.test.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +111 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +38 -0
- package/src/cli/constants.ts +5 -0
- package/src/cli/dispatcher.ts +129 -0
- package/src/cli/help.ts +56 -0
- package/src/cli/index.ts +8 -0
- package/src/cli/parser.test.ts +259 -0
- package/src/cli/parser.ts +128 -0
- package/src/cli.ts +6 -0
- package/src/commands/build.ts +264 -0
- package/src/commands/emit.ts +406 -0
- package/src/commands/init.ts +334 -0
- package/src/commands/pack.ts +114 -0
- package/src/commands/run.ts +51 -0
- package/src/config.test.ts +337 -0
- package/src/config.ts +205 -0
- package/src/index.ts +23 -0
- package/src/types.ts +121 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tsonic project init command
|
|
3
|
+
*/
|
|
4
|
+
import { writeFileSync, existsSync, readFileSync, mkdirSync } from "node:fs";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { spawnSync } from "node:child_process";
|
|
7
|
+
const DEFAULT_GITIGNORE = `# .NET build artifacts
|
|
8
|
+
generated/bin/
|
|
9
|
+
generated/obj/
|
|
10
|
+
|
|
11
|
+
# Optional: Uncomment to ignore generated C# files
|
|
12
|
+
# generated/**/*.cs
|
|
13
|
+
|
|
14
|
+
# Output executables
|
|
15
|
+
*.exe
|
|
16
|
+
app
|
|
17
|
+
|
|
18
|
+
# Dependencies
|
|
19
|
+
node_modules/
|
|
20
|
+
`;
|
|
21
|
+
const SAMPLE_MAIN_TS_JS = `export function main(): void {
|
|
22
|
+
console.log("Hello from Tsonic!");
|
|
23
|
+
|
|
24
|
+
const numbers = [1, 2, 3, 4, 5];
|
|
25
|
+
const doubled = numbers.map((n) => n * 2);
|
|
26
|
+
console.log("Doubled:", doubled.join(", "));
|
|
27
|
+
}
|
|
28
|
+
`;
|
|
29
|
+
const SAMPLE_MAIN_TS_DOTNET = `import { Console } from "@tsonic/dotnet/System";
|
|
30
|
+
import { File } from "@tsonic/dotnet/System.IO";
|
|
31
|
+
|
|
32
|
+
export function main(): void {
|
|
33
|
+
Console.WriteLine("Reading README.md...");
|
|
34
|
+
const content = File.ReadAllText("./README.md");
|
|
35
|
+
Console.WriteLine(content);
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
const SAMPLE_README = `# My Tsonic Project
|
|
39
|
+
|
|
40
|
+
This is a sample Tsonic project that demonstrates .NET interop.
|
|
41
|
+
|
|
42
|
+
## Getting Started
|
|
43
|
+
|
|
44
|
+
Build and run the project:
|
|
45
|
+
|
|
46
|
+
\`\`\`bash
|
|
47
|
+
npm run build
|
|
48
|
+
./app
|
|
49
|
+
\`\`\`
|
|
50
|
+
|
|
51
|
+
Or run directly:
|
|
52
|
+
|
|
53
|
+
\`\`\`bash
|
|
54
|
+
npm run dev
|
|
55
|
+
\`\`\`
|
|
56
|
+
|
|
57
|
+
## Project Structure
|
|
58
|
+
|
|
59
|
+
- \`src/main.ts\` - Entry point
|
|
60
|
+
- \`tsonic.json\` - Project configuration
|
|
61
|
+
- \`generated/\` - Generated C# code (gitignored)
|
|
62
|
+
`;
|
|
63
|
+
// CLI package version - installed as devDependency for npm run build/dev
|
|
64
|
+
const CLI_PACKAGE = { name: "@tsonic/cli", version: "0.0.1" };
|
|
65
|
+
/**
|
|
66
|
+
* Get type package info based on runtime mode
|
|
67
|
+
*
|
|
68
|
+
* typeRoots: Only ambient globals packages (provide global types without imports)
|
|
69
|
+
* packages: All type packages to install (includes explicit import packages)
|
|
70
|
+
*/
|
|
71
|
+
const getTypePackageInfo = (runtime) => {
|
|
72
|
+
if (runtime === "js") {
|
|
73
|
+
// JS mode:
|
|
74
|
+
// - @tsonic/cli: the compiler CLI (provides `tsonic` command)
|
|
75
|
+
// - @tsonic/js-globals: ambient globals (Array, console, etc.) - needs typeRoots
|
|
76
|
+
// - @tsonic/types: explicit imports (int, float, etc.) - just npm dep
|
|
77
|
+
return {
|
|
78
|
+
packages: [
|
|
79
|
+
CLI_PACKAGE,
|
|
80
|
+
{ name: "@tsonic/js-globals", version: "0.1.1" },
|
|
81
|
+
{ name: "@tsonic/types", version: "0.2.0" },
|
|
82
|
+
],
|
|
83
|
+
typeRoots: ["node_modules/@tsonic/js-globals"],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Dotnet mode:
|
|
87
|
+
// - @tsonic/cli: the compiler CLI (provides `tsonic` command)
|
|
88
|
+
// - @tsonic/dotnet-globals: ambient globals - needs typeRoots
|
|
89
|
+
// - @tsonic/dotnet: explicit imports (System.*, etc.) - just npm dep
|
|
90
|
+
// - @tsonic/types: transitive dep of @tsonic/dotnet
|
|
91
|
+
return {
|
|
92
|
+
packages: [
|
|
93
|
+
CLI_PACKAGE,
|
|
94
|
+
{ name: "@tsonic/dotnet-globals", version: "0.1.2" },
|
|
95
|
+
{ name: "@tsonic/dotnet", version: "0.4.0" },
|
|
96
|
+
],
|
|
97
|
+
typeRoots: ["node_modules/@tsonic/dotnet-globals"],
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Generate tsonic.json config
|
|
102
|
+
*/
|
|
103
|
+
const generateConfig = (includeTypeRoots, runtime) => {
|
|
104
|
+
const config = {
|
|
105
|
+
$schema: "https://tsonic.dev/schema/v1.json",
|
|
106
|
+
rootNamespace: "MyApp",
|
|
107
|
+
entryPoint: "src/app.ts",
|
|
108
|
+
sourceRoot: "src",
|
|
109
|
+
outputDirectory: "generated",
|
|
110
|
+
outputName: "app",
|
|
111
|
+
runtime: runtime,
|
|
112
|
+
optimize: "speed",
|
|
113
|
+
packages: [],
|
|
114
|
+
buildOptions: {
|
|
115
|
+
stripSymbols: true,
|
|
116
|
+
invariantGlobalization: true,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
if (includeTypeRoots) {
|
|
120
|
+
const typeInfo = getTypePackageInfo(runtime);
|
|
121
|
+
config.dotnet = {
|
|
122
|
+
typeRoots: typeInfo.typeRoots,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return JSON.stringify(config, null, 2) + "\n";
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Create or update package.json with scripts and metadata
|
|
129
|
+
*/
|
|
130
|
+
const createOrUpdatePackageJson = (packageJsonPath) => {
|
|
131
|
+
let packageJson;
|
|
132
|
+
if (existsSync(packageJsonPath)) {
|
|
133
|
+
// Merge with existing package.json
|
|
134
|
+
const existing = readFileSync(packageJsonPath, "utf-8");
|
|
135
|
+
packageJson = JSON.parse(existing);
|
|
136
|
+
// Ensure required fields exist
|
|
137
|
+
if (!packageJson.name) {
|
|
138
|
+
packageJson.name = "my-tsonic-app";
|
|
139
|
+
}
|
|
140
|
+
if (!packageJson.version) {
|
|
141
|
+
packageJson.version = "1.0.0";
|
|
142
|
+
}
|
|
143
|
+
if (!packageJson.type) {
|
|
144
|
+
packageJson.type = "module";
|
|
145
|
+
}
|
|
146
|
+
// Merge scripts
|
|
147
|
+
const existingScripts = packageJson.scripts || {};
|
|
148
|
+
packageJson.scripts = {
|
|
149
|
+
...existingScripts,
|
|
150
|
+
build: "tsonic build src/app.ts",
|
|
151
|
+
dev: "tsonic run src/app.ts",
|
|
152
|
+
};
|
|
153
|
+
// Ensure devDependencies exists
|
|
154
|
+
if (!packageJson.devDependencies) {
|
|
155
|
+
packageJson.devDependencies = {};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Create new package.json
|
|
160
|
+
packageJson = {
|
|
161
|
+
name: "my-tsonic-app",
|
|
162
|
+
version: "1.0.0",
|
|
163
|
+
type: "module",
|
|
164
|
+
scripts: {
|
|
165
|
+
build: "tsonic build src/app.ts",
|
|
166
|
+
dev: "tsonic run src/app.ts",
|
|
167
|
+
},
|
|
168
|
+
devDependencies: {},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n", "utf-8");
|
|
172
|
+
};
|
|
173
|
+
/**
|
|
174
|
+
* Install npm package
|
|
175
|
+
*/
|
|
176
|
+
const installPackage = (packageName, version) => {
|
|
177
|
+
const result = spawnSync("npm", ["install", "--save-dev", `${packageName}@${version}`], {
|
|
178
|
+
stdio: "inherit",
|
|
179
|
+
encoding: "utf-8",
|
|
180
|
+
});
|
|
181
|
+
if (result.status !== 0) {
|
|
182
|
+
return {
|
|
183
|
+
ok: false,
|
|
184
|
+
error: `Failed to install ${packageName}@${version}`,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
return { ok: true, value: undefined };
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* Initialize a new Tsonic project
|
|
191
|
+
*/
|
|
192
|
+
export const initProject = (cwd, options = {}) => {
|
|
193
|
+
const runtime = options.runtime ?? "js";
|
|
194
|
+
const tsonicJsonPath = join(cwd, "tsonic.json");
|
|
195
|
+
const gitignorePath = join(cwd, ".gitignore");
|
|
196
|
+
const srcDir = join(cwd, "src");
|
|
197
|
+
const appTsPath = join(srcDir, "app.ts");
|
|
198
|
+
const readmePath = join(cwd, "README.md");
|
|
199
|
+
const packageJsonPath = join(cwd, "package.json");
|
|
200
|
+
// Check if tsonic.json already exists
|
|
201
|
+
if (existsSync(tsonicJsonPath)) {
|
|
202
|
+
return {
|
|
203
|
+
ok: false,
|
|
204
|
+
error: "tsonic.json already exists. Project is already initialized.",
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
// Create or update package.json FIRST (before npm install)
|
|
209
|
+
const packageJsonExists = existsSync(packageJsonPath);
|
|
210
|
+
createOrUpdatePackageJson(packageJsonPath);
|
|
211
|
+
console.log(packageJsonExists ? "✓ Updated package.json" : "✓ Created package.json");
|
|
212
|
+
// Install type declarations based on runtime mode
|
|
213
|
+
const shouldInstallTypes = !options.skipTypes;
|
|
214
|
+
const typeInfo = getTypePackageInfo(runtime);
|
|
215
|
+
if (shouldInstallTypes) {
|
|
216
|
+
for (const pkg of typeInfo.packages) {
|
|
217
|
+
const version = options.typesVersion ?? pkg.version;
|
|
218
|
+
console.log(`Installing type declarations (${pkg.name}@${version})...`);
|
|
219
|
+
const installResult = installPackage(pkg.name, version);
|
|
220
|
+
if (!installResult.ok) {
|
|
221
|
+
return installResult;
|
|
222
|
+
}
|
|
223
|
+
console.log(`✓ Installed ${pkg.name}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Create tsonic.json
|
|
227
|
+
const config = generateConfig(shouldInstallTypes, runtime);
|
|
228
|
+
writeFileSync(tsonicJsonPath, config, "utf-8");
|
|
229
|
+
console.log("✓ Created tsonic.json");
|
|
230
|
+
// Create or append to .gitignore
|
|
231
|
+
if (existsSync(gitignorePath)) {
|
|
232
|
+
const existing = readFileSync(gitignorePath, "utf-8");
|
|
233
|
+
if (!existing.includes("generated/")) {
|
|
234
|
+
writeFileSync(gitignorePath, existing + "\n" + DEFAULT_GITIGNORE, "utf-8");
|
|
235
|
+
console.log("✓ Updated .gitignore");
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
writeFileSync(gitignorePath, DEFAULT_GITIGNORE, "utf-8");
|
|
240
|
+
console.log("✓ Created .gitignore");
|
|
241
|
+
}
|
|
242
|
+
// Create src directory and app.ts with runtime-appropriate code
|
|
243
|
+
if (!existsSync(srcDir)) {
|
|
244
|
+
mkdirSync(srcDir, { recursive: true });
|
|
245
|
+
}
|
|
246
|
+
if (!existsSync(appTsPath)) {
|
|
247
|
+
const sampleCode = runtime === "js" ? SAMPLE_MAIN_TS_JS : SAMPLE_MAIN_TS_DOTNET;
|
|
248
|
+
writeFileSync(appTsPath, sampleCode, "utf-8");
|
|
249
|
+
console.log("✓ Created src/app.ts");
|
|
250
|
+
}
|
|
251
|
+
// Create README.md
|
|
252
|
+
if (!existsSync(readmePath)) {
|
|
253
|
+
writeFileSync(readmePath, SAMPLE_README, "utf-8");
|
|
254
|
+
console.log("✓ Created README.md");
|
|
255
|
+
}
|
|
256
|
+
// Note: .csproj is generated by the build command with proper runtime DLL references
|
|
257
|
+
console.log("\n✓ Project initialized successfully!");
|
|
258
|
+
console.log("\nNext steps:");
|
|
259
|
+
console.log(" npm run build # Build executable");
|
|
260
|
+
console.log(" npm run dev # Run directly");
|
|
261
|
+
return { ok: true, value: undefined };
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
return {
|
|
265
|
+
ok: false,
|
|
266
|
+
error: `Failed to initialize project: ${error instanceof Error ? error.message : String(error)}`,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tsonic pack command - Create NuGet package from library
|
|
3
|
+
*/
|
|
4
|
+
import type { ResolvedConfig, Result } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Pack library into NuGet package
|
|
7
|
+
*/
|
|
8
|
+
export declare const packCommand: (config: ResolvedConfig) => Result<{
|
|
9
|
+
outputPath: string;
|
|
10
|
+
}, string>;
|
|
11
|
+
//# sourceMappingURL=pack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1D;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,cAAc,KACrB,MAAM,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAkGvC,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tsonic pack command - Create NuGet package from library
|
|
3
|
+
*/
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { existsSync } from "node:fs";
|
|
7
|
+
import { emitCommand } from "./emit.js";
|
|
8
|
+
/**
|
|
9
|
+
* Pack library into NuGet package
|
|
10
|
+
*/
|
|
11
|
+
export const packCommand = (config) => {
|
|
12
|
+
const { outputDirectory, outputName, quiet, verbose } = config;
|
|
13
|
+
// Verify this is a library project
|
|
14
|
+
if (config.outputConfig.type !== "library") {
|
|
15
|
+
return {
|
|
16
|
+
ok: false,
|
|
17
|
+
error: "Pack command can only be used with library projects. Set output.type to 'library' in tsonic.json",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// Verify packable is enabled
|
|
21
|
+
if (!config.outputConfig.packable) {
|
|
22
|
+
return {
|
|
23
|
+
ok: false,
|
|
24
|
+
error: "Library is not packable. Set output.packable to true in tsonic.json",
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// Step 1: Emit C# code
|
|
28
|
+
if (!quiet) {
|
|
29
|
+
console.log("Step 1/2: Generating C# code...");
|
|
30
|
+
}
|
|
31
|
+
const emitResult = emitCommand(config);
|
|
32
|
+
if (!emitResult.ok) {
|
|
33
|
+
return emitResult;
|
|
34
|
+
}
|
|
35
|
+
const generatedDir = emitResult.value.outputDir;
|
|
36
|
+
const csprojPath = join(generatedDir, "tsonic.csproj");
|
|
37
|
+
if (!existsSync(csprojPath)) {
|
|
38
|
+
return {
|
|
39
|
+
ok: false,
|
|
40
|
+
error: `No tsonic.csproj found in ${outputDirectory}/. This should have been created by emit.`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Step 2: Run dotnet pack
|
|
44
|
+
if (!quiet) {
|
|
45
|
+
console.log("Step 2/2: Creating NuGet package...");
|
|
46
|
+
}
|
|
47
|
+
const packArgs = ["pack", "tsonic.csproj", "-c", "Release", "--nologo"];
|
|
48
|
+
if (quiet) {
|
|
49
|
+
packArgs.push("--verbosity", "quiet");
|
|
50
|
+
}
|
|
51
|
+
else if (verbose) {
|
|
52
|
+
packArgs.push("--verbosity", "detailed");
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
packArgs.push("--verbosity", "minimal");
|
|
56
|
+
}
|
|
57
|
+
const packResult = spawnSync("dotnet", packArgs, {
|
|
58
|
+
cwd: generatedDir,
|
|
59
|
+
stdio: verbose ? "inherit" : "pipe",
|
|
60
|
+
encoding: "utf-8",
|
|
61
|
+
});
|
|
62
|
+
if (packResult.status !== 0) {
|
|
63
|
+
const errorMsg = packResult.stderr || packResult.stdout || "Unknown error";
|
|
64
|
+
return {
|
|
65
|
+
ok: false,
|
|
66
|
+
error: `dotnet pack failed:\n${errorMsg}`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// Find the generated .nupkg file
|
|
70
|
+
const nupkgDir = join(generatedDir, "bin", "Release");
|
|
71
|
+
// Package metadata
|
|
72
|
+
const packageId = config.outputConfig.package?.id ?? outputName;
|
|
73
|
+
const packageVersion = config.outputConfig.package?.version ?? "1.0.0";
|
|
74
|
+
const nupkgName = `${packageId}.${packageVersion}.nupkg`;
|
|
75
|
+
const nupkgPath = join(nupkgDir, nupkgName);
|
|
76
|
+
if (!existsSync(nupkgPath)) {
|
|
77
|
+
return {
|
|
78
|
+
ok: false,
|
|
79
|
+
error: `NuGet package not found at ${nupkgPath}. Check dotnet pack output for errors.`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (!quiet) {
|
|
83
|
+
console.log(`\n✓ Package created: ${nupkgPath}`);
|
|
84
|
+
console.log(`\nTo publish to NuGet.org:`);
|
|
85
|
+
console.log(` dotnet nuget push ${nupkgPath} --api-key YOUR_API_KEY --source https://api.nuget.org/v3/index.json`);
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
ok: true,
|
|
89
|
+
value: { outputPath: nupkgPath },
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tsonic run command - Build and execute
|
|
3
|
+
*/
|
|
4
|
+
import type { ResolvedConfig, Result } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Build and run the executable
|
|
7
|
+
*/
|
|
8
|
+
export declare const runCommand: (config: ResolvedConfig, programArgs?: string[]) => Result<{
|
|
9
|
+
exitCode: number;
|
|
10
|
+
}, string>;
|
|
11
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1D;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,QAAQ,cAAc,EACtB,cAAa,MAAM,EAAO,KACzB,MAAM,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAoCrC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tsonic run command - Build and execute
|
|
3
|
+
*/
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import { buildCommand } from "./build.js";
|
|
6
|
+
/**
|
|
7
|
+
* Build and run the executable
|
|
8
|
+
*/
|
|
9
|
+
export const runCommand = (config, programArgs = []) => {
|
|
10
|
+
// Build the executable
|
|
11
|
+
const buildResult = buildCommand(config);
|
|
12
|
+
if (!buildResult.ok) {
|
|
13
|
+
return buildResult;
|
|
14
|
+
}
|
|
15
|
+
const { outputPath } = buildResult.value;
|
|
16
|
+
if (!config.quiet) {
|
|
17
|
+
console.log(`\nRunning ${outputPath}...`);
|
|
18
|
+
console.log("─".repeat(50));
|
|
19
|
+
}
|
|
20
|
+
// Execute the binary
|
|
21
|
+
const runResult = spawnSync(outputPath, programArgs, {
|
|
22
|
+
stdio: "inherit",
|
|
23
|
+
encoding: "utf-8",
|
|
24
|
+
});
|
|
25
|
+
if (runResult.error) {
|
|
26
|
+
return {
|
|
27
|
+
ok: false,
|
|
28
|
+
error: `Failed to run executable: ${runResult.error.message}`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (!config.quiet) {
|
|
32
|
+
console.log("─".repeat(50));
|
|
33
|
+
console.log(`\nProcess exited with code ${runResult.status ?? 0}`);
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
ok: true,
|
|
37
|
+
value: { exitCode: runResult.status ?? 0 },
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,MAAsB,EACtB,cAAwB,EAAE,EACY,EAAE;IACxC,uBAAuB;IACvB,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC;IAEzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,qBAAqB;IACrB,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE;QACnD,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,6BAA6B,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE;SAC9D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,8BAA8B,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;KAC3C,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loading and validation
|
|
3
|
+
*/
|
|
4
|
+
import type { TsonicConfig, CliOptions, ResolvedConfig, Result } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Load tsonic.json from a directory
|
|
7
|
+
*/
|
|
8
|
+
export declare const loadConfig: (configPath: string) => Result<TsonicConfig, string>;
|
|
9
|
+
/**
|
|
10
|
+
* Find tsonic.json by walking up the directory tree
|
|
11
|
+
*/
|
|
12
|
+
export declare const findConfig: (startDir: string) => string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve final configuration from file + CLI args
|
|
15
|
+
*/
|
|
16
|
+
export declare const resolveConfig: (config: TsonicConfig, cliOptions: CliOptions, entryFile?: string) => ResolvedConfig;
|
|
17
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,MAAM,EAEP,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,YAAY,MAAM,KACjB,MAAM,CAAC,YAAY,EAAE,MAAM,CA2B7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,KAAG,MAAM,GAAG,IAiBtD,CAAC;AA+EF;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,YAAY,EACpB,YAAY,UAAU,EACtB,YAAY,MAAM,KACjB,cAgDF,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loading and validation
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
5
|
+
import { join, resolve, dirname } from "node:path";
|
|
6
|
+
import { detectRid } from "@tsonic/backend";
|
|
7
|
+
/**
|
|
8
|
+
* Load tsonic.json from a directory
|
|
9
|
+
*/
|
|
10
|
+
export const loadConfig = (configPath) => {
|
|
11
|
+
if (!existsSync(configPath)) {
|
|
12
|
+
return {
|
|
13
|
+
ok: false,
|
|
14
|
+
error: `Config file not found: ${configPath}`,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const content = readFileSync(configPath, "utf-8");
|
|
19
|
+
const config = JSON.parse(content);
|
|
20
|
+
// Validate required fields
|
|
21
|
+
if (!config.rootNamespace) {
|
|
22
|
+
return {
|
|
23
|
+
ok: false,
|
|
24
|
+
error: "tsonic.json: 'rootNamespace' is required",
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return { ok: true, value: config };
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return {
|
|
31
|
+
ok: false,
|
|
32
|
+
error: `Failed to parse tsonic.json: ${error instanceof Error ? error.message : String(error)}`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Find tsonic.json by walking up the directory tree
|
|
38
|
+
*/
|
|
39
|
+
export const findConfig = (startDir) => {
|
|
40
|
+
let currentDir = resolve(startDir);
|
|
41
|
+
// Walk up until we find tsonic.json or hit root
|
|
42
|
+
while (true) {
|
|
43
|
+
const configPath = join(currentDir, "tsonic.json");
|
|
44
|
+
if (existsSync(configPath)) {
|
|
45
|
+
return configPath;
|
|
46
|
+
}
|
|
47
|
+
const parentDir = dirname(currentDir);
|
|
48
|
+
if (parentDir === currentDir) {
|
|
49
|
+
// Hit root
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
currentDir = parentDir;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Auto-detect output type based on entry point and project structure
|
|
57
|
+
*/
|
|
58
|
+
const autoDetectOutputType = (entryPoint) => {
|
|
59
|
+
// If no entry point, default to library
|
|
60
|
+
if (!entryPoint) {
|
|
61
|
+
return "library";
|
|
62
|
+
}
|
|
63
|
+
// If entry point is provided, default to executable
|
|
64
|
+
// The user specified an entry point, so they want a runnable program
|
|
65
|
+
return "executable";
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Resolve output configuration from config + CLI options
|
|
69
|
+
*/
|
|
70
|
+
const resolveOutputConfig = (config, cliOptions, entryPoint) => {
|
|
71
|
+
const configOutput = config.output ?? {};
|
|
72
|
+
// Determine output type
|
|
73
|
+
const outputType = cliOptions.type ?? configOutput.type ?? autoDetectOutputType(entryPoint);
|
|
74
|
+
// Base config from file
|
|
75
|
+
const baseConfig = {
|
|
76
|
+
type: outputType,
|
|
77
|
+
name: configOutput.name ?? config.outputName,
|
|
78
|
+
};
|
|
79
|
+
// Merge executable-specific options
|
|
80
|
+
if (outputType === "executable") {
|
|
81
|
+
return {
|
|
82
|
+
...baseConfig,
|
|
83
|
+
nativeAot: cliOptions.noAot ? false : (configOutput.nativeAot ?? true),
|
|
84
|
+
singleFile: cliOptions.singleFile ?? configOutput.singleFile ?? true,
|
|
85
|
+
trimmed: configOutput.trimmed ?? true,
|
|
86
|
+
stripSymbols: cliOptions.noStrip
|
|
87
|
+
? false
|
|
88
|
+
: (configOutput.stripSymbols ?? true),
|
|
89
|
+
optimization: cliOptions.optimize ?? configOutput.optimization ?? "speed",
|
|
90
|
+
invariantGlobalization: config.buildOptions?.invariantGlobalization ?? true,
|
|
91
|
+
selfContained: cliOptions.selfContained ?? configOutput.selfContained ?? true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
// Merge library-specific options
|
|
95
|
+
if (outputType === "library") {
|
|
96
|
+
return {
|
|
97
|
+
...baseConfig,
|
|
98
|
+
targetFrameworks: configOutput.targetFrameworks ?? [
|
|
99
|
+
config.dotnetVersion ?? "net10.0",
|
|
100
|
+
],
|
|
101
|
+
generateDocumentation: cliOptions.generateDocs ?? configOutput.generateDocumentation ?? true,
|
|
102
|
+
includeSymbols: cliOptions.includeSymbols ?? configOutput.includeSymbols ?? true,
|
|
103
|
+
packable: cliOptions.pack ?? configOutput.packable ?? false,
|
|
104
|
+
package: configOutput.package,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// Console app fallback
|
|
108
|
+
return {
|
|
109
|
+
...baseConfig,
|
|
110
|
+
singleFile: cliOptions.singleFile ?? configOutput.singleFile ?? true,
|
|
111
|
+
selfContained: cliOptions.selfContained ?? configOutput.selfContained ?? true,
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Resolve final configuration from file + CLI args
|
|
116
|
+
*/
|
|
117
|
+
export const resolveConfig = (config, cliOptions, entryFile) => {
|
|
118
|
+
const entryPoint = entryFile ?? config.entryPoint;
|
|
119
|
+
const sourceRoot = cliOptions.src ??
|
|
120
|
+
config.sourceRoot ??
|
|
121
|
+
(entryPoint ? dirname(entryPoint) : "src");
|
|
122
|
+
// Default type roots based on runtime mode
|
|
123
|
+
// Only ambient globals packages need typeRoots - explicit import packages are resolved normally
|
|
124
|
+
const runtime = config.runtime ?? "js";
|
|
125
|
+
const defaultTypeRoots = runtime === "js"
|
|
126
|
+
? ["node_modules/@tsonic/js-globals"]
|
|
127
|
+
: ["node_modules/@tsonic/dotnet-globals"];
|
|
128
|
+
const typeRoots = config.dotnet?.typeRoots ?? defaultTypeRoots;
|
|
129
|
+
// Merge libraries from config and CLI
|
|
130
|
+
const configLibraries = config.dotnet?.libraries ?? [];
|
|
131
|
+
const cliLibraries = cliOptions.lib ?? [];
|
|
132
|
+
const libraries = [...configLibraries, ...cliLibraries];
|
|
133
|
+
// Resolve output configuration
|
|
134
|
+
const outputConfig = resolveOutputConfig(config, cliOptions, entryPoint);
|
|
135
|
+
return {
|
|
136
|
+
rootNamespace: cliOptions.namespace ?? config.rootNamespace,
|
|
137
|
+
entryPoint,
|
|
138
|
+
sourceRoot,
|
|
139
|
+
outputDirectory: config.outputDirectory ?? "generated",
|
|
140
|
+
outputName: cliOptions.out ?? config.outputName ?? "app",
|
|
141
|
+
rid: cliOptions.rid ?? config.rid ?? detectRid(),
|
|
142
|
+
dotnetVersion: config.dotnetVersion ?? "net10.0",
|
|
143
|
+
optimize: cliOptions.optimize ?? config.optimize ?? "speed",
|
|
144
|
+
runtime: config.runtime ?? "js",
|
|
145
|
+
// Only include user-specified packages
|
|
146
|
+
// Runtime DLLs are bundled with @tsonic/tsonic and added as assembly references
|
|
147
|
+
packages: config.dotnet?.packages ?? config.packages ?? [],
|
|
148
|
+
outputConfig,
|
|
149
|
+
stripSymbols: cliOptions.noStrip
|
|
150
|
+
? false
|
|
151
|
+
: (config.buildOptions?.stripSymbols ?? true),
|
|
152
|
+
invariantGlobalization: config.buildOptions?.invariantGlobalization ?? true,
|
|
153
|
+
keepTemp: cliOptions.keepTemp ?? false,
|
|
154
|
+
verbose: cliOptions.verbose ?? false,
|
|
155
|
+
quiet: cliOptions.quiet ?? false,
|
|
156
|
+
typeRoots,
|
|
157
|
+
libraries,
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|