diff --git a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsParser.kt b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsParser.kt index ba1546c..3f05c10 100644 --- a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsParser.kt +++ b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsParser.kt @@ -27,6 +27,7 @@ object VersionsParser { fun fromFile(file: File): VersionsFile { val tree = mapper.readTree(file) normalizeGradleVersion(tree) + normalizeProjectDefaults(tree) return mapper.treeToValue(tree, VersionsFile::class.java) } @@ -38,4 +39,14 @@ object VersionsParser { val normalized = Gradle.fromValue(gradleNode.asText()).name tree.put("gradle", normalized) } + + private fun normalizeProjectDefaults(tree: com.fasterxml.jackson.databind.JsonNode) { + if (tree !is ObjectNode) return + val projectNode = tree.get("project") + if (projectNode !is ObjectNode) return + + if (projectNode.get("develocityUrl")?.isNull == true) { + projectNode.put("develocityUrl", "") + } + } } diff --git a/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/VersionsParserTest.kt b/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/VersionsParserTest.kt index e32b9a1..354dec6 100644 --- a/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/VersionsParserTest.kt +++ b/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/VersionsParserTest.kt @@ -124,6 +124,27 @@ class VersionsParserTest { assertTrue(versions.additionalBuildGradleRootPlugins.isEmpty()) } + @Test + fun `parses YAML with empty develocityUrl as blank string`() { + val yaml = """ + project: + develocity: "4.1" + develocityUrl: + jdk: "23" + kotlin: + kgp: "2.2.10" + ksp: "2.2.10-2.0.2" + coroutines: "1.10.2" + """.trimIndent() + + val file = File(tempDir.toFile(), "versions.yaml").apply { writeText(yaml) } + val versions = VersionsParser.fromFile(file).resolve() + + assertEquals("4.1", versions.project.develocity) + assertEquals("", versions.project.develocityUrl) + assertEquals("23", versions.project.jdk) + } + @Test fun `parses gradle from YAML case insensitively`() { val yaml = """