Skip to content

Commit ad22da3

Browse files
committed
use processors named domain object to avoid "after evaluate"
1 parent aed6c71 commit ad22da3

2 files changed

Lines changed: 26 additions & 33 deletions

File tree

src/main/kotlin/io/openapiprocessor/gradle/OpenApiProcessorExtensionUtils.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,15 @@ class OpenApiProcessorExtensionUtils {
1212
const val EXTENSION_NAME_DEFAULT = "openapiProcessor"
1313
const val EXTENSION_NAME_ALTERNATIVE = "openapi"
1414

15-
fun createExtension (project: Project) {
15+
fun createExtension (project: Project): OpenApiProcessorExtension {
1616
val extension = project.extensions.create (
1717
EXTENSION_NAME_DEFAULT,
1818
OpenApiProcessorExtension::class.java,
1919
project)
2020

2121
// make same extension object available under alternative name
2222
project.extensions.add(EXTENSION_NAME_ALTERNATIVE, extension)
23-
}
24-
25-
fun getExtension(project: Project): OpenApiProcessorExtension {
26-
return project.extensions.getByName (EXTENSION_NAME_DEFAULT) as OpenApiProcessorExtension
23+
return extension
2724
}
2825
}
2926
}

src/main/kotlin/io/openapiprocessor/gradle/OpenApiProcessorPlugin.kt

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package io.openapiprocessor.gradle
77

88
import io.openapiprocessor.gradle.OpenApiProcessorExtensionUtils.Companion.EXTENSION_NAME_DEFAULT
99
import io.openapiprocessor.gradle.OpenApiProcessorExtensionUtils.Companion.createExtension
10-
import io.openapiprocessor.gradle.OpenApiProcessorExtensionUtils.Companion.getExtension
1110
import io.openapiprocessor.gradle.version.GitHubVersionCheck
1211
import io.openapiprocessor.gradle.version.GitHubVersionProvider
1312
import io.openapiprocessor.gradle.version.VersionCheck
@@ -29,10 +28,10 @@ class OpenApiProcessorPlugin: Plugin<Project> {
2928

3029
addOpenApiProcessorRepository(project)
3130

32-
createExtension(project)
31+
val extension = createExtension(project)
32+
createProcessingTasks(project, extension)
3333

34-
project.afterEvaluate(createCheckUpdatesAction())
35-
project.afterEvaluate(createTasksBuilderAction())
34+
checkUpdates(project, extension)
3635
}
3736

3837
private fun addOpenApiProcessorRepository (project: Project) {
@@ -51,37 +50,34 @@ class OpenApiProcessorPlugin: Plugin<Project> {
5150
}
5251

5352
/**
54-
* Provides an Action that checks for plugin updates.
53+
* Check for plugin updates.
5554
*/
56-
private fun createCheckUpdatesAction(): Action<Project> {
57-
return object : Action<Project> {
58-
override fun execute(project: Project) {
59-
val extension = getExtension(project)
60-
val interval = extension.checkUpdates.get()
61-
62-
val version = VersionCheck(project.rootDir.absolutePath, interval)
63-
if (!version.canCheck("gradle"))
64-
return
55+
private fun checkUpdates(project: Project, extension: OpenApiProcessorExtension) {
56+
val interval = extension.checkUpdates.get()
6557

66-
checkLatestRelease()
67-
}
68-
}
58+
val version = VersionCheck(project.rootDir.absolutePath, interval)
59+
if (!version.canCheck("gradle"))
60+
return
61+
62+
checkLatestRelease()
6963
}
7064

7165
/**
72-
* Provides an Action that create a 'process{ProcessorName}' task for each configured processor.
66+
* Create a 'process{ProcessorName}' task for each configured processor.
7367
*/
74-
private fun createTasksBuilderAction(): Action<Project> {
75-
return object : Action<Project> {
76-
override fun execute(project: Project) {
77-
val extension = getExtension(project)
78-
extension.processors.get().forEach { entry ->
79-
val name = "process${entry.key.replaceFirstChar { it.uppercase() }}"
80-
val action = createTaskBuilderAction(entry.key, entry.value, extension)
81-
project.tasks.register(name, OpenApiProcessorTask::class.java, action)
68+
fun createProcessingTasks(project: Project, extension: OpenApiProcessorExtension) {
69+
extension.processors.configureEach(
70+
object : Action<Processor> {
71+
override fun execute(processor: Processor) {
72+
val name = "process${processor.name.replaceFirstChar { it.uppercase() }}"
73+
74+
project.tasks.register(
75+
name,
76+
OpenApiProcessorTask::class.java,
77+
createTaskBuilderAction(name, processor, extension)
78+
)
8279
}
83-
}
84-
}
80+
})
8581
}
8682

8783
/**

0 commit comments

Comments
 (0)