diff --git a/src/cli/cmds/import.ts b/src/cli/cmds/import.ts index 8fe2e9817..e792ec4c3 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 = ['typescript', 'python', 'java', 'go']; +const LANGUAGES = ['typescript', 'python', 'java', 'csharp', 'go']; class Command implements yargs.CommandModule { public readonly command = 'import [SPEC]'; diff --git a/src/import/base.ts b/src/import/base.ts index e2069508a..3d96039bc 100644 --- a/src/import/base.ts +++ b/src/import/base.ts @@ -7,8 +7,8 @@ import { mkdtemp } from '../util'; export enum Language { TYPESCRIPT = 'typescript', PYTHON = 'python', - DOTNET = 'dotnet', JAVA = 'java', + DOTNET = 'csharp', GO = 'go', } @@ -59,6 +59,7 @@ export abstract class ImportBase { switch (options.targetLanguage) { case Language.PYTHON: case Language.JAVA: + case Language.DOTNET: name = name.split('.').reverse().join('.'); break; } @@ -128,6 +129,19 @@ export abstract class ImportBase { }; } + // dotnet! + if (options.targetLanguage === Language.DOTNET) { + const dotnetNamespace = `${moduleNamePrefix ? `${moduleNamePrefix}.${module.name}` : module.name}` + .replace(/-/g, '_') + .split('.') + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join('.'); + opts.csharp = { + outdir: outdir, + namespace: dotnetNamespace, + }; + } + // go! if (options.targetLanguage === Language.GO) { const { userModuleName, userModulePath } = this.getGoModuleName(outdir);