Skip to content

Commit

Permalink
Fix a regression in alwaysGenerateTypesMatching
Browse files Browse the repository at this point in the history
  • Loading branch information
martinbonnin committed Feb 7, 2024
1 parent a76eed5 commit 622fd7e
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -205,10 +205,7 @@ abstract class ApolloGenerateOptionsTask : DefaultTask() {
abstract var isKmp: Boolean

@get:Input
abstract var isMultiModule: Boolean

@get:Input
abstract var hasDownstreamDependencies: Boolean
abstract var generateAllTypes: Boolean

@get:Internal
var hasPackageNameGenerator: Boolean = false
Expand All @@ -235,7 +232,7 @@ abstract class ApolloGenerateOptionsTask : DefaultTask() {
val upstreamTargetLanguage = upstreamOtherOptions?.targetLanguage
val targetLanguage = targetLanguage(generateKotlinModels.orNull, languageVersion.orNull, isJavaPluginApplied, kgpVersion, upstreamTargetLanguage)
val generateFilterNotNull = generateFilterNotNull(targetLanguage, isKmp)
val alwaysGenerateTypesMatching = alwaysGenerateTypesMatching(alwaysGenerateTypesMatching.orNull, isMultiModule, hasDownstreamDependencies)
val alwaysGenerateTypesMatching = alwaysGenerateTypesMatching(alwaysGenerateTypesMatching.orNull, generateAllTypes)
val upstreamCodegenModels = upstreamOtherOptions?.codegenModels
val codegenModels = codegenModels(codegenModels.orNull, upstreamCodegenModels)

Expand Down Expand Up @@ -365,29 +362,6 @@ private fun scalarMapping(
}
}

private fun generateFilterNotNull(targetLanguage: TargetLanguage, isKmp: Boolean): Boolean? {
return if (targetLanguage == TargetLanguage.JAVA) {
null
} else {
isKmp
}
}

private fun alwaysGenerateTypesMatching(alwaysGenerateTypesMatching: Set<String>?, isMultiModule: Boolean, hasDownstreamDependencies: Boolean): Set<String> {
if (alwaysGenerateTypesMatching != null) {
// The user specified something, use this
return alwaysGenerateTypesMatching
}

if (isMultiModule && !hasDownstreamDependencies) {
// No downstream dependency, generate everything because we don't know what types are going to be used downstream
return setOf(".*")
} else {
// get the used coordinates from the downstream dependencies
return emptySet()
}
}

@Serializable
internal class OtherOptions(
val targetLanguage: TargetLanguage,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -712,8 +712,8 @@ abstract class DefaultApolloExtension(
task.isJavaPluginApplied = project.hasJavaPlugin()
task.kgpVersion = project.apolloGetKotlinPluginVersion()
task.isKmp = project.isKotlinMultiplatform
task.isMultiModule = service.isMultiModule()
task.hasDownstreamDependencies = service.downstreamDependencies.isNotEmpty()
// If there is no downstream dependency, generate everything because we don't know what types are going to be used downstream
task.generateAllTypes = service.isSchemaModule() && service.isMultiModule() && service.downstreamDependencies.isEmpty()

task.otherOptions.set(BuildDirLayout.otherOptions(project, service))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import com.apollographql.apollo3.compiler.MANIFEST_PERSISTED_QUERY
import com.apollographql.apollo3.compiler.OperationIdGenerator
import com.apollographql.apollo3.compiler.OperationOutputGenerator
import com.apollographql.apollo3.compiler.Plugin
import com.apollographql.apollo3.compiler.TargetLanguage
import com.apollographql.apollo3.compiler.operationoutput.OperationDescriptor
import com.apollographql.apollo3.compiler.operationoutput.OperationId
import com.apollographql.apollo3.compiler.operationoutput.OperationOutput
Expand Down Expand Up @@ -100,4 +101,26 @@ internal fun Plugin.toOperationOutputGenerator(): OperationOutputGenerator {
}
}
}
}

internal fun generateFilterNotNull(targetLanguage: TargetLanguage, isKmp: Boolean): Boolean? {
return if (targetLanguage == TargetLanguage.JAVA) {
null
} else {
isKmp
}
}

internal fun alwaysGenerateTypesMatching(alwaysGenerateTypesMatching: Set<String>?, generateAllTypes: Boolean): Set<String> {
if (alwaysGenerateTypesMatching != null) {
// The user specified something, use this
return alwaysGenerateTypesMatching
}

if (generateAllTypes) {
return setOf(".*")
} else {
// get the used coordinates from the downstream dependencies
return emptySet()
}
}

0 comments on commit 622fd7e

Please sign in to comment.