diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index 804d41c4a69..deaf4618ae2 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -174,6 +174,10 @@ apply plugin: 'org.openapi.generator' |None |The template directory holding a custom template. +|templateResourcePath +|String +|Directory with mustache templates via resource path. This option will overwrite any option defined in `templateDir` + |auth |String |None diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt index 46d6cfcc690..f1b1d9e74ed 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt @@ -100,6 +100,7 @@ class OpenApiGeneratorPlugin : Plugin { inputSpecRootDirectory.set(generate.inputSpecRootDirectory) remoteInputSpec.set(generate.remoteInputSpec) templateDir.set(generate.templateDir) + templateResourcePath.set(generate.templateResourcePath) auth.set(generate.auth) globalProperties.set(generate.globalProperties) configFile.set(generate.configFile) diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt index b80ffbcdd69..48c5e88259f 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt @@ -69,6 +69,11 @@ open class OpenApiGeneratorGenerateExtension(project: Project) { */ val templateDir = project.objects.property() + /** + * The template location (which may be a directory or a classpath location) holding custom templates. + */ + val templateResourcePath = project.objects.property() + /** * Adds authorization headers when fetching the OpenAPI definitions remotely. * Pass in a URL-encoded string of name:header with a comma separating multiple values diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt index 193cdbed15d..6733f61476a 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt @@ -133,6 +133,13 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac @PathSensitive(PathSensitivity.RELATIVE) val templateDir = project.objects.property() + /** + * Resource path containing template files. + */ + @Optional + @Input + val templateResourcePath = project.objects.property() + /** * Adds authorization headers when fetching the OpenAPI definitions remotely. * Pass in a URL-encoded string of name:header with a comma separating multiple values @@ -707,6 +714,13 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac configurator.setTemplateDir(value) } + templateResourcePath.ifNotEmpty { value -> + templateDir.ifNotEmpty { + logger.warn("Both templateDir and templateResourcePath were configured. templateResourcePath overwrites templateDir.") + } + configurator.setTemplateDir(value) + } + packageName.ifNotEmpty { value -> configurator.setPackageName(value) }