diff --git a/.projen/tasks.json b/.projen/tasks.json index 40f60cf0f..53c9dbe82 100644 --- a/.projen/tasks.json +++ b/.projen/tasks.json @@ -183,6 +183,34 @@ } ] }, + "integ:init:csharp-app-npm": { + "name": "integ:init:csharp-app-npm", + "steps": [ + { + "exec": "yarn run compile" + }, + { + "exec": "yarn run package" + }, + { + "exec": "jest --testMatch \"/test/integ/**/*.test.ts\" --testPathIgnorePatterns \"/node_modules/\" --passWithNoTests --all --updateSnapshot --coverageProvider=v8 integ/init.test.ts -t csharp-app-npm" + } + ] + }, + "integ:init:csharp-app-yarn": { + "name": "integ:init:csharp-app-yarn", + "steps": [ + { + "exec": "yarn run compile" + }, + { + "exec": "yarn run package" + }, + { + "exec": "jest --testMatch \"/test/integ/**/*.test.ts\" --testPathIgnorePatterns \"/node_modules/\" --passWithNoTests --all --updateSnapshot --coverageProvider=v8 integ/init.test.ts -t csharp-app-yarn" + } + ] + }, "integ:init:go-app-npm": { "name": "integ:init:go-app-npm", "steps": [ diff --git a/package.json b/package.json index d70d20ea3..1b245d810 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ "eslint": "npx projen eslint", "install-helm": "npx projen install-helm", "integ:init": "npx projen integ:init", + "integ:init:csharp-app-npm": "npx projen integ:init:csharp-app-npm", + "integ:init:csharp-app-yarn": "npx projen integ:init:csharp-app-yarn", "integ:init:go-app-npm": "npx projen integ:init:go-app-npm", "integ:init:go-app-yarn": "npx projen integ:init:go-app-yarn", "integ:init:java-app-npm": "npx projen integ:init:java-app-npm", diff --git a/src/cli/cmds/import.ts b/src/cli/cmds/import.ts index 67c48f9a7..91b6423ac 100644 --- a/src/cli/cmds/import.ts +++ b/src/cli/cmds/import.ts @@ -7,7 +7,7 @@ import { parseImports } from '../../util'; const config = readConfigSync(); const DEFAULT_OUTDIR = 'imports'; -const LANGUAGES = ['dotnet', 'typescript', 'python', 'java', 'go']; +const LANGUAGES = ['csharp', 'typescript', 'python', 'java', 'go']; class Command implements yargs.CommandModule { public readonly command = 'import [SPEC]'; diff --git a/src/import/base.ts b/src/import/base.ts index 62f5d9de7..e369f760a 100644 --- a/src/import/base.ts +++ b/src/import/base.ts @@ -7,7 +7,7 @@ import { mkdtemp } from '../util'; export enum Language { TYPESCRIPT = 'typescript', PYTHON = 'python', - DOTNET = 'dotnet', + CSHARP = 'csharp', JAVA = 'java', GO = 'go', } @@ -146,7 +146,7 @@ export abstract class ImportBase { } // csharp! - if (options.targetLanguage === Language.DOTNET) { + if (options.targetLanguage === Language.CSHARP) { const csharpName = module.name.replace(/\//g, '.').replace(/-/g, '_').replace(/(?:^|_)([a-z])/g, (_, char) => char.toUpperCase()); opts.csharp = { outdir: outdir, diff --git a/templates/csharp-app/MyApp/Cdk8s.Imports/Cdk8s.Imports.esproj b/templates/csharp-app/MyApp/Cdk8s.Imports/Cdk8s.Imports.esproj new file mode 100644 index 000000000..eed1189c4 --- /dev/null +++ b/templates/csharp-app/MyApp/Cdk8s.Imports/Cdk8s.Imports.esproj @@ -0,0 +1,24 @@ + + + + npm run import + $(SolutionDir)Strive.Platform.Automation.sln + + + + + + + + + + + + + + + + + + + diff --git a/templates/csharp-app/MyApp/Cdk8s.Imports/cdk8s.yaml b/templates/csharp-app/MyApp/Cdk8s.Imports/cdk8s.yaml new file mode 100644 index 000000000..1a307ef44 --- /dev/null +++ b/templates/csharp-app/MyApp/Cdk8s.Imports/cdk8s.yaml @@ -0,0 +1,3 @@ +language: csharp +imports: + - k8s \ No newline at end of file diff --git a/templates/csharp-app/MyApp/Cdk8s.Imports/package.json b/templates/csharp-app/MyApp/Cdk8s.Imports/package.json new file mode 100644 index 000000000..6f3a6993d --- /dev/null +++ b/templates/csharp-app/MyApp/Cdk8s.Imports/package.json @@ -0,0 +1,11 @@ +{ + "name": "imports", + "version": "0.0.1", + "private": true, + "scripts": { + "import": "cdk8s import -o ../Imports" + }, + "dependencies": { + "cdk8s-cli": "{{ cdk8s_cli_spec }}" + } +} diff --git a/templates/csharp-app/MyApp/Imports/.gitkeep b/templates/csharp-app/MyApp/Imports/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/templates/csharp-app/MyApp/MyApp.sln b/templates/csharp-app/MyApp/MyApp.sln new file mode 100644 index 000000000..b92b678eb --- /dev/null +++ b/templates/csharp-app/MyApp/MyApp.sln @@ -0,0 +1,23 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApp", "MyApp\MyApp.csproj", "{D0E5713E-D58F-482D-92C0-504C9AB84DD5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cdk8s.Imports", "Cdk8s.Imports\Cdk8s.Imports.esproj", "{5337F2AB-8B52-48F8-9AA5-0DC7CEFAF8A4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D0E5713E-D58F-482D-92C0-504C9AB84DD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D0E5713E-D58F-482D-92C0-504C9AB84DD5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D0E5713E-D58F-482D-92C0-504C9AB84DD5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D0E5713E-D58F-482D-92C0-504C9AB84DD5}.Release|Any CPU.Build.0 = Release|Any CPU + {5337F2AB-8B52-48F8-9AA5-0DC7CEFAF8A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5337F2AB-8B52-48F8-9AA5-0DC7CEFAF8A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5337F2AB-8B52-48F8-9AA5-0DC7CEFAF8A4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5337F2AB-8B52-48F8-9AA5-0DC7CEFAF8A4}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal + diff --git a/templates/csharp-app/MyApp/MyApp/MyApp.csproj b/templates/csharp-app/MyApp/MyApp/MyApp.csproj new file mode 100644 index 000000000..7437a421c --- /dev/null +++ b/templates/csharp-app/MyApp/MyApp/MyApp.csproj @@ -0,0 +1,18 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + + + + \ No newline at end of file diff --git a/templates/csharp-app/MyApp/MyApp/Program.cs b/templates/csharp-app/MyApp/MyApp/Program.cs new file mode 100644 index 000000000..92795491c --- /dev/null +++ b/templates/csharp-app/MyApp/MyApp/Program.cs @@ -0,0 +1,9 @@ +using Constructs; +using Org.Cdk8s; + +var app = new App(); +_ = new Main(app, "{{ $base }}"); + +app.Synth(); + +public class Main(Construct scope, string id, IChartProps? props = null) : Chart(scope, id, props); \ No newline at end of file diff --git a/test/integ/init.test.ts b/test/integ/init.test.ts index 4380bc7de..390438bd7 100644 --- a/test/integ/init.test.ts +++ b/test/integ/init.test.ts @@ -41,6 +41,10 @@ test('python-app-npm', () => { init('python-app', cliNpmdir); }); +test('csharp-app-npm', () => { + init('csharp-app', cliNpmdir); +}); + test('typescript-app-yarn', () => { init('typescript-app', cliYarndir); }); @@ -57,6 +61,10 @@ test('python-app-yarn', () => { init('python-app', cliYarndir); }); +test('csharp-app-yarn', () => { + init('csharp-app', cliYarndir); +}); + function init(template: string, clidir: string) { const workdir = mkdtempSync(join(tmpdir(), 'cdk8s-init-test-'));