Skip to content

fix: refactor module generation ports to clarify ownership - #440

Merged
cdsap merged 1 commit into
mainfrom
issue/439-hermes-refactor-module-generation-ports-to-a1
Sep 3, 2026
Merged

fix: refactor module generation ports to clarify ownership#440
cdsap merged 1 commit into
mainfrom
issue/439-hermes-refactor-module-generation-ports-to-a1

Conversation

@cdsap

@cdsap cdsap commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Summary

Problem

project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/writer/ModulesWriter.kt defines the module-generation port interfaces at lines 87-122, while core generator implementations import them from the writer package, for example generator/planner/ModuleClassPlannerJvm.kt:3, generator/buildfiles/BuildFilesGeneratorJvm.kt:3, and generator/classes/ClassGeneratorJvm.kt:5.

Why this matters

This makes planning, class generation, test generation, resource generation, and build-file generation depend on the writer/orchestration package for their abstractions. That reverses the intended dependency direction and makes the writer package look like the owner of core generation contracts, which raises coupling and makes future generator tests or alternate orchestration harder to reason about.

Proposed change

Move ModuleClassPlanner, ClassGenerator, TestGenerator, BuildFilesGenerator, and ResourceGeneratorA unchanged into a small core-facing file such as project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/ModuleGenerationPorts.kt or generator/ports/ModuleGenerationPorts.kt, then update imports in ModulesWriter and the existing implementations. Keep names and method signatures unchanged.

Notes

DDD and clean architecture lens: the writer is an adapter/orchestrator that should depend on generation contracts, not own the contracts that planners and generators implement. This is a small package-boundary cleanup with no domain model or output-format change.

Fixes #439

Changes

  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/ModuleGenerationPorts.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/buildfiles/BuildFilesGeneratorAndroid.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/buildfiles/BuildFilesGeneratorJvm.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/classes/ClassGeneratorAndroid.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/classes/ClassGeneratorAndroidLegacy.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/classes/ClassGeneratorJvm.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/planner/ModuleClassPlannerAndroid.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/planner/ModuleClassPlannerAndroidLegacy.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/planner/ModuleClassPlannerJvm.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/resources/ResourceGenerator.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/test/TestGeneratorAndroid.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/test/TestGeneratorAndroidLegacy.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/test/TestGeneratorJvm.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/writer/ModulesWriter.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/generator/ModuleGenerationPortsTest.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/writer/ModulesWriterTest.kt

Verification

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

@cdsap
cdsap merged commit 9fdbb94 into main Sep 3, 2026
12 checks passed
@cdsap
cdsap deleted the issue/439-hermes-refactor-module-generation-ports-to-a1 branch September 3, 2026 17:49
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 module generation ports to clarify ownership

1 participant