Skip to content

Commit afcdf94

Browse files
authored
Extension constructor refactor (#354)
1 parent 4ad9831 commit afcdf94

3 files changed

Lines changed: 19 additions & 13 deletions

File tree

plugin/src/main/kotlin/com/github/gmazzo/buildconfig/BuildConfigPlugin.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,13 @@ public class BuildConfigPlugin : Plugin<Project> {
3333
"Gradle version must be at least $MIN_GRADLE_VERSION"
3434
}
3535

36-
val sourceSets = objects.domainObjectContainer(DefaultBuildConfigSourceSet::class)
37-
38-
val defaultSS = sourceSets.create(SourceSet.MAIN_SOURCE_SET_NAME)
39-
4036
val extension = extensions.create(
4137
BuildConfigExtension::class.java,
4238
"buildConfig",
4339
DefaultBuildConfigExtension::class.java,
44-
sourceSets,
45-
defaultSS,
46-
) as BuildConfigExtensionInternal
40+
) as DefaultBuildConfigExtension
4741

48-
sourceSets.configureEach { configureSourceSet(it, defaultSS) }
42+
extension.sourceSets.configureEach { configureSourceSet(it, extension.defaultSourceSet) }
4943

5044
extension.generateAtSync
5145
.convention(
@@ -56,7 +50,7 @@ public class BuildConfigPlugin : Plugin<Project> {
5650
.finalizeValueOnRead()
5751

5852
afterEvaluate {
59-
sourceSets.toList() // force configuration
53+
extension.sourceSets.toList() // force configuration
6054

6155
// generate at sync
6256
if (extension.generateAtSync.get() && isGradleSync) {

plugin/src/main/kotlin/com/github/gmazzo/buildconfig/internal/BuildConfigExtensionInternal.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.github.gmazzo.buildconfig.internal
33
import com.github.gmazzo.buildconfig.BuildConfigExtension
44
import org.gradle.api.NamedDomainObjectContainer
55

6-
internal interface BuildConfigExtensionInternal : BuildConfigExtension {
6+
internal interface BuildConfigExtensionInternal : BuildConfigExtension, BuildConfigSourceSetInternal {
77

88
override val sourceSets: NamedDomainObjectContainer<out BuildConfigSourceSetInternal>
99

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
11
package com.github.gmazzo.buildconfig.internal
22

3+
import javax.inject.Inject
34
import org.gradle.api.NamedDomainObjectContainer
5+
import org.gradle.api.model.ObjectFactory
6+
import org.gradle.api.tasks.SourceSet
7+
import org.gradle.kotlin.dsl.domainObjectContainer
48

5-
internal abstract class DefaultBuildConfigExtension(
9+
internal abstract class DefaultBuildConfigExtension private constructor(
610
override val sourceSets: NamedDomainObjectContainer<BuildConfigSourceSetInternal>,
7-
defaultSourceSet: BuildConfigSourceSetInternal
11+
val defaultSourceSet: BuildConfigSourceSetInternal = sourceSets.maybeCreate(SourceSet.MAIN_SOURCE_SET_NAME)
812
) : BuildConfigExtensionInternal,
913
BuildConfigSourceSetInternal by defaultSourceSet,
10-
GroovyNullValueWorkaround()
14+
GroovyNullValueWorkaround() {
15+
16+
@Inject
17+
@Suppress("UNCHECKED_CAST")
18+
constructor(objects: ObjectFactory): this(
19+
objects.domainObjectContainer(DefaultBuildConfigSourceSet::class) as NamedDomainObjectContainer<BuildConfigSourceSetInternal>,
20+
)
21+
22+
}

0 commit comments

Comments
 (0)