Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import com.apollographql.apollo.compiler.model.CompilationUnitModel
import com.apollographql.apollo.compiler.model.ProjectModel
import com.apollographql.apollo.compiler.model.toCompilationUnitModel
import com.apollographql.apollo.compiler.model.toProjectModel
import com.apollographql.apollo.compiler.toCodegenOptions
import com.apollographql.apollo.gradle.api.ApolloGradleToolingModel
import com.apollographql.apollo.tooling.model.TelemetryData
import com.apollographql.apollo.tooling.model.toTelemetryData
Expand Down
66 changes: 66 additions & 0 deletions plugin/src/main/kotlin/com/apollographql/ijplugin/gradle/Json.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.apollographql.ijplugin.gradle

import com.apollographql.apollo.compiler.CodegenOptions
import com.apollographql.apollo.compiler.CodegenSchemaOptions
import com.apollographql.apollo.compiler.IrOptions
import kotlinx.serialization.json.Json
import java.io.File

private val json = Json {
classDiscriminator = "#class"
ignoreUnknownKeys = true
explicitNulls = false
coerceInputValues = true
}

private inline fun <reified T> File.parseFromJson(): T {
return json.decodeFromString<T>(readText())
}

fun File.toCodegenOptions(): CodegenOptions = runCatching { parseFromJson<CodegenOptions>() }.getOrElse {
CodegenOptions(
targetLanguage = null,
packageName = null,
rootPackageName = null,
decapitalizeFields = null,
useSemanticNaming = null,
generateMethods = null,
operationManifestFormat = null,
generateSchema = null,
generatedSchemaName = null,
sealedClassesForEnumsMatching = null,
generateApolloEnums = null,
generateAsInternal = null,
addUnknownForEnums = null,
addDefaultArgumentForInputObjects = null,
generateFilterNotNull = null,
generateInputBuilders = null,
addJvmOverloads = null,
requiresOptInAnnotation = null,
jsExport = null,
generateModelBuilders = null,
classesForEnumsMatching = null,
generatePrimitiveTypes = null,
nullableFieldStyle = null,
generateFragmentImplementations = null,
generateQueryDocument = null,
)
}

fun File.toCodegenSchemaOptions(): CodegenSchemaOptions = runCatching { parseFromJson<CodegenSchemaOptions>() }.getOrElse {
CodegenSchemaOptions()
}

fun File.toIrOptions(): IrOptions = runCatching { parseFromJson<IrOptions>() }.getOrElse {
IrOptions(
fieldsOnDisjointTypesMustMerge = null,
decapitalizeFields = null,
flattenModels = null,
warnOnDeprecatedUsages = null,
failOnWarnings = null,
addTypename = null,
generateOptionalOperationVariables = null,
alwaysGenerateTypesMatching = null,
codegenModels = null,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ package com.apollographql.ijplugin.gradle
import com.apollographql.apollo.annotations.ApolloExperimental
import com.apollographql.apollo.annotations.ApolloInternal
import com.apollographql.apollo.compiler.TargetLanguage
import com.apollographql.apollo.compiler.toCodegenOptions
import com.apollographql.apollo.compiler.toCodegenSchemaOptions
import com.apollographql.apollo.compiler.toIrOptions
import com.apollographql.apollo.gradle.api.ApolloGradleToolingModel
import com.apollographql.apollo.tooling.model.TelemetryData
import com.apollographql.ijplugin.telemetry.TelemetryProperty
Expand Down
Loading