From 17fa2253ba616c6271a509b93a37297c86ab3472 Mon Sep 17 00:00:00 2001 From: Inaki Villar Date: Sat, 5 Sep 2026 09:25:13 -0700 Subject: [PATCH] fix: refactor gradle resolution into versionsresolver --- .../cli/GenerateProjectRequest.kt | 8 +----- .../projectgenerator/cli/VersionsResolver.kt | 7 +++++ .../cli/GenerateProjectsCliTest.kt | 23 ---------------- .../cli/VersionsResolverTest.kt | 26 +++++++++++++++++++ 4 files changed, 34 insertions(+), 30 deletions(-) diff --git a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectRequest.kt b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectRequest.kt index 3ab2e77..d8df087 100644 --- a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectRequest.kt +++ b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectRequest.kt @@ -84,7 +84,7 @@ data class GenerateProjectRequest( typeOfStringResources = typeOfStringResources, layers = layers, generateUnitTest = generateUnitTest, - gradle = resolveGradle(cliGradle, versionsFile), + gradle = VersionsResolver.resolveGradle(cliGradle, versionsFile), projectRootPath = resolveProjectRootPath(outputDir, language, resolvedProjectName), develocity = resolveDevelocityEnabled(develocityFlag, versionsOverrides.develocityUrl), projectName = resolvedProjectName @@ -135,9 +135,3 @@ internal fun resolveProjectRootPath(outputDir: String?, language: Language, proj } } } - -internal fun resolveGradle(cliGradle: String?, versionsFile: VersionsFile?): Gradle { - return cliGradle?.let(Gradle::fromValue) - ?: versionsFile?.gradle - ?: Gradle.latest() -} diff --git a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolver.kt b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolver.kt index 2d95c59..d8c4f47 100644 --- a/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolver.kt +++ b/cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolver.kt @@ -1,6 +1,7 @@ package io.github.cdsap.projectgenerator.cli import io.github.cdsap.projectgenerator.model.DependencyInjection +import io.github.cdsap.projectgenerator.model.Gradle import io.github.cdsap.projectgenerator.model.Versions import io.github.cdsap.projectgenerator.model.VersionsFile @@ -37,4 +38,10 @@ object VersionsResolver { val base = fileVersions?.resolve() ?: Versions() return overrides.applyTo(base) } + + fun resolveGradle(cliGradle: String?, fileVersions: VersionsFile?): Gradle { + return cliGradle?.let(Gradle::fromValue) + ?: fileVersions?.gradle + ?: Gradle.latest() + } } diff --git a/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectsCliTest.kt b/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectsCliTest.kt index 84cd378..ffb2fc7 100644 --- a/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectsCliTest.kt +++ b/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectsCliTest.kt @@ -10,7 +10,6 @@ import io.github.cdsap.projectgenerator.model.Language import io.github.cdsap.projectgenerator.model.Shape import io.github.cdsap.projectgenerator.model.TypeOfStringResources import io.github.cdsap.projectgenerator.model.TypeProjectRequested -import io.github.cdsap.projectgenerator.model.VersionsFile import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertFalse import org.junit.jupiter.api.Assertions.assertTrue @@ -135,28 +134,6 @@ class GenerateProjectsCliTest { assertTrue(error.message?.contains(Gradle.supportedDisplayValues()) == true) } - @Test - fun `gradle from versions file is used when flag is absent`() { - val configured = Gradle.supported()[1] - val resolved = resolveGradle(null, VersionsFile(gradle = configured)) - - assertEquals(configured, resolved) - } - - @Test - fun `gradle flag overrides versions file`() { - val resolved = resolveGradle(Gradle.latest().cliValue, VersionsFile(gradle = Gradle.oldest())) - - assertEquals(Gradle.latest(), resolved) - } - - @Test - fun `latest gradle is used when neither flag nor versions file provide one`() { - val resolved = resolveGradle(null, null) - - assertEquals(Gradle.latest(), resolved) - } - @Test fun `default output path for kts nests project name and project_kts`() { val resolved = resolveProjectRootPath(null, Language.KTS, "sample") diff --git a/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolverTest.kt b/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolverTest.kt index b2565dd..165c35e 100644 --- a/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolverTest.kt +++ b/cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolverTest.kt @@ -2,6 +2,7 @@ package io.github.cdsap.projectgenerator.cli import io.github.cdsap.projectgenerator.model.Android import io.github.cdsap.projectgenerator.model.DependencyInjection +import io.github.cdsap.projectgenerator.model.Gradle import io.github.cdsap.projectgenerator.model.Project import io.github.cdsap.projectgenerator.model.Versions import io.github.cdsap.projectgenerator.model.VersionsFile @@ -86,4 +87,29 @@ class VersionsResolverTest { assertEquals("", resolved.project.develocityUrl) assertEquals(DependencyInjection.METRO, resolved.di) } + + @Test + fun `gradle from versions file is used when flag is absent`() { + val configured = Gradle.supported()[1] + val resolved = VersionsResolver.resolveGradle(null, VersionsFile(gradle = configured)) + + assertEquals(configured, resolved) + } + + @Test + fun `gradle flag overrides versions file`() { + val resolved = VersionsResolver.resolveGradle( + Gradle.latest().cliValue, + VersionsFile(gradle = Gradle.oldest()) + ) + + assertEquals(Gradle.latest(), resolved) + } + + @Test + fun `latest gradle is used when neither flag nor versions file provide one`() { + val resolved = VersionsResolver.resolveGradle(null, null) + + assertEquals(Gradle.latest(), resolved) + } }