Skip to content

Commit

Permalink
Enabled configuration via Gradle build file, and improved documentation.
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvanderwerf committed Feb 1, 2025
1 parent a15f0e1 commit 3334332
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
outputDir.set(generate.outputDir)
inputSpec.set(generate.inputSpec)
inputSpecRootDirectory.set(generate.inputSpecRootDirectory)
inputSpecRootDirectorySkipMerge.set(generate.inputSpecRootDirectorySkipMerge)
remoteInputSpec.set(generate.remoteInputSpec)
templateDir.set(generate.templateDir)
templateResourcePath.set(generate.templateResourcePath)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,28 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {

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

/**
* Local root folder with spec files
* Local root folder with spec files.
*
* By default, a merged spec file will be generated based on the contents of the directory. To disable this, set the
* `inputSpecRootDirectorySkipMerge` property.
*/
val inputSpecRootDirectory = project.objects.property<String>()

/**
* Skip bundling all spec files into a merged spec file, if true.
*
* Default false.
*/
val inputSpecRootDirectorySkipMerge = project.objects.property<Boolean>()

/**
* The remote Open API 2.0/3.x specification URL location.
*/
Expand Down Expand Up @@ -400,6 +414,7 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
@Suppress("MemberVisibilityCanBePrivate")
fun applyDefaults() {
releaseNote.set("Minor update")
inputSpecRootDirectorySkipMerge.set(false)
modelNamePrefix.set("")
modelNameSuffix.set("")
apiNameSuffix.set("")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,22 +97,29 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac

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

/**
* Local root folder with spec files
* Local root folder with spec files.
*
* By default, a merged spec file will be generated based on the contents of the directory. To disable this, set the
* `inputSpecRootDirectorySkipMerge` property.
*/
@Optional
@get:InputDirectory
@PathSensitive(PathSensitivity.RELATIVE)
val inputSpecRootDirectory = project.objects.property<String>();

/**
* Skip merge spec files step
* Skip bundling all spec files into a merged spec file, if true.
*/
@Input
@Optional
Expand Down Expand Up @@ -623,8 +630,9 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
}

inputSpecRootDirectory.ifNotEmpty { inputSpecRootDirectoryValue ->
var runMergeSpec = true
inputSpecRootDirectorySkipMerge.ifNotEmpty { skipMergeValue -> { runMergeSpec = !skipMergeValue } }
val skipMerge = inputSpecRootDirectorySkipMerge.get()
val runMergeSpec = !skipMerge
System.err.println("Checking: $runMergeSpec / $inputSpecRootDirectorySkipMerge / ${inputSpecRootDirectorySkipMerge.get()} / ${inputSpecRootDirectorySkipMerge.get()::class.java}.")
if (runMergeSpec) {
run {
resolvedInputSpec = MergedSpecBuilder(
Expand Down

0 comments on commit 3334332

Please sign in to comment.