Skip to content

fix: refactor gradle resolution into versionsresolver - #447

Merged
cdsap merged 1 commit into
mainfrom
issue/446-hermes-refactor-gradle-resolution-into-vers-a1
Sep 5, 2026
Merged

fix: refactor gradle resolution into versionsresolver#447
cdsap merged 1 commit into
mainfrom
issue/446-hermes-refactor-gradle-resolution-into-vers-a1

Conversation

@cdsap

@cdsap cdsap commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Summary

Problem

Gradle wrapper version precedence (CLI --gradle > versions.yaml > Gradle.latest()) lives in resolveGradle() inside cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectRequest.kt, while dependency/plugin versions are resolved in cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolver.kt. Both consume the same VersionsFile and CLI inputs, but configuration resolution is split across two application-layer types, with Gradle precedence tests in cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectsCliTest.kt instead of VersionsResolverTest.kt.

Why this matters

The split boundary makes precedence rules easy to update inconsistently and scatters related tests. GenerateProjectRequest.resolve() should orchestrate inputs and outputs, not own every merge policy for values that already come from the same versions file.

Proposed change

Move resolveGradle(cliGradle, versionsFile) into VersionsResolver (e.g. fun resolveGradle(cliGradle: String?, fileVersions: VersionsFile?): Gradle), delete the standalone helper from GenerateProjectRequest.kt, and call VersionsResolver.resolveGradle(...) from GenerateProjectRequest.resolve(). Move the three Gradle precedence tests from GenerateProjectsCliTest.kt to VersionsResolverTest.kt. No behavior or public CLI surface changes.

Notes

DDD/clean-architecture lens: treat VersionsResolver as the application service for configuration merging (infrastructure YAML + CLI adapter inputs → domain Versions/Gradle), and keep GenerateProjectRequest as a thin use-case assembler. This is a behavior-preserving extraction aligned with the existing VersionsOverrides.applyTo pattern.

Fixes #446

Changes

  • cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectRequest.kt
  • cli/src/main/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolver.kt
  • cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/GenerateProjectsCliTest.kt
  • cli/src/test/kotlin/io/github/cdsap/projectgenerator/cli/VersionsResolverTest.kt

Verification

  • ./gradlew :project-generator:unitTest
  • ./gradlew :cli:test
  • ./gradlew ktlintCheck

@cdsap
cdsap merged commit e04babe into main Sep 5, 2026
14 checks passed
@cdsap
cdsap deleted the issue/446-hermes-refactor-gradle-resolution-into-vers-a1 branch September 5, 2026 18:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor Gradle resolution into VersionsResolver

1 participant