in smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/GradleGenerator.kt [21:82]
fun writeGradleBuild(
settings: KotlinSettings,
manifest: FileManifest,
dependencies: List<KotlinDependency>
) {
val writer = createCodeWriter()
val isKmp = settings.build.generateMultiplatformProject
val isRootModule = settings.build.generateFullProject
val annotationRenderer: InlineCodeWriter = {
val annotations = settings.build.optInAnnotations ?: emptyList()
if (annotations.isNotEmpty()) {
val formatted = annotations.joinToString(
separator = ",\n",
transform = {
"\"$it\""
}
)
write(formatted)
}
}
val pluginsBodyRenderer: InlineCodeWriter = {
val pluginName = if (isKmp) "multiplatform" else "jvm"
write(
"kotlin(\"$pluginName\") #W",
{ w: CodeWriter ->
if (isRootModule) {
w.write("version #S", KOTLIN_COMPILER_VERSION)
}
}
)
}
when {
isKmp -> renderKmpGradleBuild(
writer,
isRootModule,
dependencies,
pluginsBodyRenderer,
repositoryRenderer,
annotationRenderer
)
else -> renderJvmGradleBuild(
writer,
isRootModule,
dependencies,
pluginsBodyRenderer,
repositoryRenderer,
annotationRenderer
)
}
val contents = writer.toString()
manifest.writeFile("build.gradle.kts", contents)
if (settings.build.generateFullProject) {
manifest.writeFile("settings.gradle.kts", "")
}
}