Skip to content

fix: refactor projectwriter to receive immutable project name mappings - #471

Merged
cdsap merged 1 commit into
mainfrom
issue/470-hermes-refactor-projectwriter-to-receive-im-a1
Sep 16, 2026
Merged

cdsap merged 1 commit into
mainfrom
issue/470-hermes-refactor-projectwriter-to-receive-im-a1

Conversation

@cdsap

@cdsap cdsap commented Sep 16, 2026

Copy link
Copy Markdown
Owner

Summary

Problem

ProjectWriter reads layer and module names from the mutable global NameMappings singleton instead of receiving them as an explicit dependency. ProjectGenerator configures this global state before writing, while ProjectWriterTest mutates and restores it manually.

Why this matters

The writer's output depends on hidden process-wide state, which couples generation runs, complicates parallel execution, and makes unit tests order-sensitive. The repository already has ProjectNameMaps as an immutable value object.

Proposed change

Add a ProjectNameMaps parameter to ProjectWriter and use it when rendering settings.gradle files. Pass the maps created by ProjectNameMappingFactory from ProjectGenerator, and update ProjectWriter tests to provide explicit maps instead of mutating NameMappings.

Notes

ProjectNameMaps acts as a domain value object, while ProjectWriter is an output adapter. Making the mapping dependency explicit clarifies that boundary and improves testability without changing the wider generation architecture.

Fixes #470

Changes

  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/ProjectGenerator.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/writer/ProjectWriter.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/generator/buildfiles/BuildFilesGeneratorAndroidTest.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/generator/buildfiles/BuildFilesGeneratorJvmTest.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/generator/test/TestGeneratorAndroidTest.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/generator/test/TestGeneratorJvmTest.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/writer/ProjectWriterTest.kt

Verification

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

@cdsap
cdsap merged commit 09b97d0 into main Sep 16, 2026
14 checks passed
@cdsap
cdsap deleted the issue/470-hermes-refactor-projectwriter-to-receive-im-a1 branch September 16, 2026 19:44
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 ProjectWriter to receive immutable project name mappings

1 participant