Skip to content

Commit 3334332

Browse files
Enabled configuration via Gradle build file, and improved documentation.
1 parent a15f0e1 commit 3334332

3 files changed

Lines changed: 29 additions & 5 deletions

File tree

modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
9898
outputDir.set(generate.outputDir)
9999
inputSpec.set(generate.inputSpec)
100100
inputSpecRootDirectory.set(generate.inputSpecRootDirectory)
101+
inputSpecRootDirectorySkipMerge.set(generate.inputSpecRootDirectorySkipMerge)
101102
remoteInputSpec.set(generate.remoteInputSpec)
102103
templateDir.set(generate.templateDir)
103104
templateResourcePath.set(generate.templateResourcePath)

modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,28 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
5151

5252
/**
5353
* The Open API 2.0/3.x specification location.
54+
*
55+
* Be default, Gradle will treat the openApiGenerate task as up-to-date based only on this file, regardless of
56+
* changes to any $ref referenced files. Use the `inputSpecRootDirectory` property to have Gradle track changes to
57+
* an entire directory of spec files.
5458
*/
5559
val inputSpec = project.objects.property<String>()
5660

5761
/**
58-
* Local root folder with spec files
62+
* Local root folder with spec files.
63+
*
64+
* By default, a merged spec file will be generated based on the contents of the directory. To disable this, set the
65+
* `inputSpecRootDirectorySkipMerge` property.
5966
*/
6067
val inputSpecRootDirectory = project.objects.property<String>()
6168

69+
/**
70+
* Skip bundling all spec files into a merged spec file, if true.
71+
*
72+
* Default false.
73+
*/
74+
val inputSpecRootDirectorySkipMerge = project.objects.property<Boolean>()
75+
6276
/**
6377
* The remote Open API 2.0/3.x specification URL location.
6478
*/
@@ -400,6 +414,7 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
400414
@Suppress("MemberVisibilityCanBePrivate")
401415
fun applyDefaults() {
402416
releaseNote.set("Minor update")
417+
inputSpecRootDirectorySkipMerge.set(false)
403418
modelNamePrefix.set("")
404419
modelNameSuffix.set("")
405420
apiNameSuffix.set("")

modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,22 +97,29 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
9797

9898
/**
9999
* The Open API 2.0/3.x specification location.
100+
*
101+
* Be default, Gradle will treat the openApiGenerate task as up-to-date based only on this file, regardless of
102+
* changes to any $ref referenced files. Use the `inputSpecRootDirectory` property to have Gradle track changes to
103+
* an entire directory of spec files.
100104
*/
101105
@Optional
102106
@get:InputFile
103107
@PathSensitive(PathSensitivity.RELATIVE)
104108
val inputSpec = project.objects.property<String>()
105109

106110
/**
107-
* Local root folder with spec files
111+
* Local root folder with spec files.
112+
*
113+
* By default, a merged spec file will be generated based on the contents of the directory. To disable this, set the
114+
* `inputSpecRootDirectorySkipMerge` property.
108115
*/
109116
@Optional
110117
@get:InputDirectory
111118
@PathSensitive(PathSensitivity.RELATIVE)
112119
val inputSpecRootDirectory = project.objects.property<String>();
113120

114121
/**
115-
* Skip merge spec files step
122+
* Skip bundling all spec files into a merged spec file, if true.
116123
*/
117124
@Input
118125
@Optional
@@ -623,8 +630,9 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
623630
}
624631

625632
inputSpecRootDirectory.ifNotEmpty { inputSpecRootDirectoryValue ->
626-
var runMergeSpec = true
627-
inputSpecRootDirectorySkipMerge.ifNotEmpty { skipMergeValue -> { runMergeSpec = !skipMergeValue } }
633+
val skipMerge = inputSpecRootDirectorySkipMerge.get()
634+
val runMergeSpec = !skipMerge
635+
System.err.println("Checking: $runMergeSpec / $inputSpecRootDirectorySkipMerge / ${inputSpecRootDirectorySkipMerge.get()} / ${inputSpecRootDirectorySkipMerge.get()::class.java}.")
628636
if (runMergeSpec) {
629637
run {
630638
resolvedInputSpec = MergedSpecBuilder(

0 commit comments

Comments
 (0)