diff --git a/libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo3/gradle/internal/ApolloGenerateSourcesTask.kt b/libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo3/gradle/internal/ApolloGenerateSourcesTask.kt index b32d696e75b..b263e95f21e 100644 --- a/libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo3/gradle/internal/ApolloGenerateSourcesTask.kt +++ b/libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo3/gradle/internal/ApolloGenerateSourcesTask.kt @@ -42,6 +42,7 @@ import com.apollographql.apollo3.compiler.ScalarInfo import com.apollographql.apollo3.compiler.TargetLanguage import com.apollographql.apollo3.compiler.hooks.ApolloCompilerJavaHooks import com.apollographql.apollo3.compiler.hooks.ApolloCompilerKotlinHooks +import com.apollographql.apollo3.compiler.toUsedCoordinates import org.gradle.api.DefaultTask import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.DirectoryProperty @@ -73,6 +74,10 @@ abstract class ApolloGenerateSourcesTask : DefaultTask() { @get:Optional abstract val metadataOutputFile: RegularFileProperty + @get:InputFiles + @get:PathSensitive(PathSensitivity.RELATIVE) + abstract val usedCoordinates: ConfigurableFileCollection + @get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE) abstract val graphqlFiles: ConfigurableFileCollection @@ -323,12 +328,17 @@ abstract class ApolloGenerateSourcesTask : DefaultTask() { else -> commonMetadata.codegenModels } + val alwaysGenerateTypesMatching = usedCoordinates.files.map { it.toUsedCoordinates() } + .fold(alwaysGenerateTypesMatching.getOrElse(defaultAlwaysGenerateTypesMatching)) { acc, new -> + acc + new + } + val options = Options( executableFiles = graphqlFiles.files, outputDir = outputDir.asFile.get(), testDir = testDir.asFile.get(), debugDir = debugDir.asFile.orNull, - alwaysGenerateTypesMatching = alwaysGenerateTypesMatching.getOrElse(defaultAlwaysGenerateTypesMatching), + alwaysGenerateTypesMatching = alwaysGenerateTypesMatching, operationOutputFile = operationOutputFile.asFile.orNull, operationOutputGenerator = operationOutputGenerator, useSemanticNaming = useSemanticNaming.getOrElse(defaultUseSemanticNaming), diff --git a/libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo3/gradle/internal/DefaultApolloExtension.kt b/libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo3/gradle/internal/DefaultApolloExtension.kt index 8fdfd0a154c..043053e0700 100644 --- a/libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo3/gradle/internal/DefaultApolloExtension.kt +++ b/libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo3/gradle/internal/DefaultApolloExtension.kt @@ -746,17 +746,11 @@ abstract class DefaultApolloExtension( } task.packageNameGenerator = packageNameGenerator task.generateFilterNotNull.set(project.isKotlinMultiplatform) - task.alwaysGenerateTypesMatching.set(project.provider { - val jsonFiles = if (service.usedCoordinates != null) { - listOf(service.usedCoordinates!!) - } else { - usedCoordinatesConsumerConfiguration.files - } - jsonFiles.map { it.toUsedCoordinates() } - .fold(service.alwaysGenerateTypesMatching.getOrElse(emptySet())) { acc, new -> - acc + new - } - }) + task.usedCoordinates.from(usedCoordinatesConsumerConfiguration) + if (service.usedCoordinates != null) { + task.usedCoordinates.from(service.usedCoordinates) + } + task.alwaysGenerateTypesMatching.set(service.alwaysGenerateTypesMatching) task.projectPath.set(project.path) task.generateFragmentImplementations.set(service.generateFragmentImplementations) task.generateQueryDocument.set(service.generateQueryDocument)