diff --git a/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/executor.ts b/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/executor.ts index c9acb98..f6100c1 100644 --- a/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/executor.ts +++ b/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/executor.ts @@ -26,6 +26,7 @@ export default async function runExecutor( options.globalProperties, options.typeMappings, options.silent, + options.templateDir, outputDir, ); @@ -41,6 +42,7 @@ async function generateSources( globalProperties: string, typeMappings: string, silent: boolean, + templateDir: string, outputDir: string, ): Promise { mkdirSync(outputDir, { recursive: true }); @@ -71,6 +73,10 @@ async function generateSources( args.push('--global-property', globalProperties); } + if (templateDir) { + args.push('--template-dir', templateDir); + } + logger.info(`[command]: ${command} ${args.join(' ')}`); const child = spawn(command, args, { stdio: silent ? 'ignore' : 'pipe' }); diff --git a/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/schema.d.ts b/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/schema.d.ts index 7b8011a..e10d053 100644 --- a/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/schema.d.ts +++ b/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/schema.d.ts @@ -7,4 +7,5 @@ export interface GenerateApiLibSourcesExecutorSchema { globalProperties?: string; typeMappings?: string; silent?: boolean; + templateDir?: string; } diff --git a/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/schema.json b/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/schema.json index 52dbc76..60647f8 100644 --- a/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/schema.json +++ b/packages/nx-plugin-openapi/src/executors/generate-api-lib-sources/schema.json @@ -39,6 +39,10 @@ "type": "boolean", "description": "Whether or not to suppress generator output", "default": false + }, + "templateDir": { + "type": "string", + "description": "The path (relative to the workspace root) to folder containing the template files" } }, "required": [] diff --git a/packages/nx-plugin-openapi/src/generators/api-lib/generator.ts b/packages/nx-plugin-openapi/src/generators/api-lib/generator.ts index c830d36..f17dad1 100644 --- a/packages/nx-plugin-openapi/src/generators/api-lib/generator.ts +++ b/packages/nx-plugin-openapi/src/generators/api-lib/generator.ts @@ -1,11 +1,17 @@ // Nrwl import { - addProjectConfiguration, formatFiles, generateFiles, GeneratorCallback, + addProjectConfiguration, + formatFiles, + generateFiles, + GeneratorCallback, getWorkspaceLayout, - joinPathFragments, names, + joinPathFragments, + names, offsetFromRoot, ProjectType, - readWorkspaceConfiguration, Tree, updateJson + readWorkspaceConfiguration, + Tree, + updateJson, } from '@nrwl/devkit'; import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-serial'; // Third Parties @@ -16,9 +22,6 @@ import init from '../init/generator'; // Schemas import { ApiLibGeneratorSchema } from './schema'; - - - const projectType: ProjectType = 'library'; interface NormalizedSchema extends ApiLibGeneratorSchema { @@ -88,6 +91,7 @@ const getExecutorOptions = (options: NormalizedSchema): GenerateApiLibSourcesExe : [options.projectRootApiSpecLib, options.sourceSpecFileRelativePath].join('/'), additionalProperties: options.additionalProperties, globalProperties: options.globalProperties, + templateDir: options.templateDir, }; if (options.isRemoteSpec && options.sourceSpecUrlAuthorizationHeaders) { diff --git a/packages/nx-plugin-openapi/src/generators/api-lib/schema.d.ts b/packages/nx-plugin-openapi/src/generators/api-lib/schema.d.ts index 5fdae2c..d7c2d6c 100644 --- a/packages/nx-plugin-openapi/src/generators/api-lib/schema.d.ts +++ b/packages/nx-plugin-openapi/src/generators/api-lib/schema.d.ts @@ -12,5 +12,6 @@ export interface ApiLibGeneratorSchema { sourceSpecFileRelativePath?: string; additionalProperties?: string; globalProperties?: string; + templateDir?: string; skipFormat?: boolean; } diff --git a/packages/nx-plugin-openapi/src/generators/api-lib/schema.json b/packages/nx-plugin-openapi/src/generators/api-lib/schema.json index d622882..40a7c95 100644 --- a/packages/nx-plugin-openapi/src/generators/api-lib/schema.json +++ b/packages/nx-plugin-openapi/src/generators/api-lib/schema.json @@ -85,6 +85,12 @@ "x-prompt": "Do you want to specify any global properties for the generator? key1=value1,key2=value2 (https://openapi-generator.tech/docs/globals)", "default": "" }, + "templateDir": { + "type": "string", + "description": "The path (relative to the workspace root) to the folder containing your custom templates", + "x-prompt": "If you want to use custom templates, what's the path of the folder that contains these files?", + "default": "" + }, "skipFormat": { "description": "Skip formatting files.", "type": "boolean",