diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f8e1ee3..d997cfc 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8a84887..92ed943 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=72f44c9f8ebcb1af43838f45ee5c4aa9c5444898b3468ab3f4af7b6076c5bc3f -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionSha256Sum=60ea723356d81263e8002fec0fcf9e2b0eee0c0850c7a3d7ab0a63f2ccc601f3 +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index adff685..0262dcb 100755 --- a/gradlew +++ b/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/BuildConfigPlugin.kt b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/BuildConfigPlugin.kt index 01c9ad1..8b13f8b 100644 --- a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/BuildConfigPlugin.kt +++ b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/BuildConfigPlugin.kt @@ -2,10 +2,8 @@ package com.github.gmazzo.buildconfig import com.github.gmazzo.buildconfig.generators.BuildConfigJavaGenerator import com.github.gmazzo.buildconfig.generators.BuildConfigKotlinGenerator -import com.github.gmazzo.buildconfig.internal.BuildConfigExtensionInternal import com.github.gmazzo.buildconfig.internal.BuildConfigSourceSetInternal import com.github.gmazzo.buildconfig.internal.DefaultBuildConfigExtension -import com.github.gmazzo.buildconfig.internal.DefaultBuildConfigSourceSet import com.github.gmazzo.buildconfig.internal.bindings.AndroidBinder import com.github.gmazzo.buildconfig.internal.bindings.JavaBinder import com.github.gmazzo.buildconfig.internal.bindings.KotlinBinder @@ -16,8 +14,6 @@ import org.gradle.api.DomainObjectCollection import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.plugins.PluginContainer -import org.gradle.api.tasks.SourceSet -import org.gradle.kotlin.dsl.domainObjectContainer import org.gradle.kotlin.dsl.newInstance import org.gradle.kotlin.dsl.register import org.gradle.util.GradleVersion diff --git a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/BuildConfigTask.kt b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/BuildConfigTask.kt index f7ec499..0038ba9 100644 --- a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/BuildConfigTask.kt +++ b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/BuildConfigTask.kt @@ -21,6 +21,8 @@ public abstract class BuildConfigTask : DefaultTask() { @get:OutputDirectory public abstract val outputDir: DirectoryProperty + private var supersededBy: String? = null + init { onlyIf("There are build config fields to generate") { task -> (task as BuildConfigTask).specs.get() @@ -31,6 +33,8 @@ public abstract class BuildConfigTask : DefaultTask() { @TaskAction public fun generateBuildConfigFile() { + check(supersededBy == null) { "This has been superseeded by $supersededBy" } + val dir = outputDir.get().asFile dir.deleteRecursively() @@ -57,4 +61,8 @@ public abstract class BuildConfigTask : DefaultTask() { } } + internal fun supersededBy(other: BuildConfigClassSpec) { + this.supersededBy = other.name + } + } diff --git a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/generators/BuildConfigJavaGenerator.kt b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/generators/BuildConfigJavaGenerator.kt index 73fc78e..ded3de4 100644 --- a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/generators/BuildConfigJavaGenerator.kt +++ b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/generators/BuildConfigJavaGenerator.kt @@ -4,15 +4,7 @@ import com.github.gmazzo.buildconfig.BuildConfigType import com.github.gmazzo.buildconfig.BuildConfigValue import com.github.gmazzo.buildconfig.internal.asVarArg import com.github.gmazzo.buildconfig.internal.elements -import com.squareup.javapoet.ArrayTypeName -import com.squareup.javapoet.ClassName -import com.squareup.javapoet.FieldSpec -import com.squareup.javapoet.JavaFile -import com.squareup.javapoet.MethodSpec -import com.squareup.javapoet.ParameterizedTypeName -import com.squareup.javapoet.TypeName -import com.squareup.javapoet.TypeSpec -import com.squareup.javapoet.WildcardTypeName +import com.squareup.javapoet.* import java.io.File import java.net.URI as JavaURI import javax.lang.model.element.Modifier @@ -181,7 +173,7 @@ public open class BuildConfigJavaGenerator( return when (this) { TypeName.LONG, ClassName.get(String::class.java) -> singleFormat() - is ArrayTypeName -> elements.format("{", "}", componentType) + is ArrayTypeName -> elements.format("{", "}", null) LIST, GENERIC_LIST -> listFormat(null) SET, GENERIC_SET -> setFormat(null) MAP, GENERIC_MAP -> mapFormat(null, null) diff --git a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/generators/BuildConfigKotlinGenerator.kt b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/generators/BuildConfigKotlinGenerator.kt index 45df5db..0c74af5 100644 --- a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/generators/BuildConfigKotlinGenerator.kt +++ b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/generators/BuildConfigKotlinGenerator.kt @@ -7,38 +7,8 @@ import com.github.gmazzo.buildconfig.BuildConfigType import com.github.gmazzo.buildconfig.BuildConfigValue import com.github.gmazzo.buildconfig.internal.asVarArg import com.github.gmazzo.buildconfig.internal.elements -import com.squareup.kotlinpoet.ARRAY -import com.squareup.kotlinpoet.BOOLEAN -import com.squareup.kotlinpoet.BOOLEAN_ARRAY -import com.squareup.kotlinpoet.BYTE -import com.squareup.kotlinpoet.BYTE_ARRAY -import com.squareup.kotlinpoet.CHAR -import com.squareup.kotlinpoet.CHAR_ARRAY -import com.squareup.kotlinpoet.ClassName -import com.squareup.kotlinpoet.DOUBLE -import com.squareup.kotlinpoet.DOUBLE_ARRAY -import com.squareup.kotlinpoet.FLOAT -import com.squareup.kotlinpoet.FLOAT_ARRAY -import com.squareup.kotlinpoet.FileSpec -import com.squareup.kotlinpoet.INT -import com.squareup.kotlinpoet.INT_ARRAY -import com.squareup.kotlinpoet.KModifier -import com.squareup.kotlinpoet.LIST -import com.squareup.kotlinpoet.LONG -import com.squareup.kotlinpoet.LONG_ARRAY -import com.squareup.kotlinpoet.MAP -import com.squareup.kotlinpoet.ParameterizedTypeName +import com.squareup.kotlinpoet.* import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy -import com.squareup.kotlinpoet.PropertySpec -import com.squareup.kotlinpoet.SET -import com.squareup.kotlinpoet.SHORT -import com.squareup.kotlinpoet.SHORT_ARRAY -import com.squareup.kotlinpoet.STAR -import com.squareup.kotlinpoet.STRING -import com.squareup.kotlinpoet.TypeName -import com.squareup.kotlinpoet.TypeSpec -import com.squareup.kotlinpoet.asClassName -import com.squareup.kotlinpoet.asTypeName import java.io.File import java.net.URI as JavaURI import org.gradle.api.logging.Logging @@ -229,7 +199,7 @@ public open class BuildConfigKotlinGenerator( SET, GENERIC_SET -> setFormat(null) MAP, GENERIC_MAP -> mapFormat(null, null) is ParameterizedTypeName -> when (nonNullable.rawType) { - ARRAY -> arrayFormat(nonNullable.typeArguments[0]) + ARRAY -> arrayFormat(null) LIST, GENERIC_LIST -> listFormat(nonNullable.typeArguments[0]) SET, GENERIC_SET -> setFormat(nonNullable.typeArguments[0]) MAP, GENERIC_MAP -> mapFormat(nonNullable.typeArguments[0], nonNullable.typeArguments[1]) diff --git a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/internal/DefaultBuildConfigSourceSet.kt b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/internal/DefaultBuildConfigSourceSet.kt index 77ad012..8c9b27e 100644 --- a/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/internal/DefaultBuildConfigSourceSet.kt +++ b/plugin/src/main/kotlin/com/github/gmazzo/buildconfig/internal/DefaultBuildConfigSourceSet.kt @@ -66,7 +66,7 @@ internal abstract class DefaultBuildConfigSourceSet( if (!isSuperseded) { isSuperseded = true generateTask.configure { - it.doFirst { error("'${this@DefaultBuildConfigSourceSet.name}' was superseded by '${other.name}' source set") } + supersededBy(other) } } diff --git a/plugin/src/main/kotlin/org/gradle/kotlin/dsl/BuildConfigClassSpecDSL.kt b/plugin/src/main/kotlin/org/gradle/kotlin/dsl/BuildConfigClassSpecDSL.kt index 963897e..28987d4 100644 --- a/plugin/src/main/kotlin/org/gradle/kotlin/dsl/BuildConfigClassSpecDSL.kt +++ b/plugin/src/main/kotlin/org/gradle/kotlin/dsl/BuildConfigClassSpecDSL.kt @@ -1,10 +1,6 @@ package org.gradle.kotlin.dsl -import com.github.gmazzo.buildconfig.BuildConfigClassSpec -import com.github.gmazzo.buildconfig.BuildConfigDsl -import com.github.gmazzo.buildconfig.BuildConfigField -import com.github.gmazzo.buildconfig.BuildConfigSourceSet -import com.github.gmazzo.buildconfig.BuildConfigValue +import com.github.gmazzo.buildconfig.* import java.io.Serializable import kotlin.reflect.typeOf import org.gradle.api.Action @@ -42,7 +38,7 @@ public inline fun BuildConfigClassSpec.buildConfig @BuildConfigDsl @JvmName("buildConfigFieldExpression") -public inline fun BuildConfigClassSpec.buildConfigField( +public inline fun BuildConfigClassSpec.buildConfigField( name: String, expression: BuildConfigValue.Expression, ): BuildConfigField = buildConfigField(name) { @@ -52,7 +48,7 @@ public inline fun BuildConfigClassSpec.buildConfigField( @BuildConfigDsl @JvmName("buildConfigFieldExpression") -public inline fun BuildConfigClassSpec.buildConfigField( +public inline fun BuildConfigClassSpec.buildConfigField( name: String, expression: Provider, ): BuildConfigField = buildConfigField(name) {