Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@ import io.github.cdsap.projectgenerator.model.Versions

class SettingsGradle {

fun get(versions: Versions, develocity: Boolean, projectName: String): String {
fun get(
versions: Versions,
develocity: Boolean,
projectName: String,
modulePaths: List<String> = emptyList()
): String {
val pluginLines = buildList {
if (develocity) {
add("""id("com.gradle.develocity") version "${versions.project.develocity}"""")
Expand Down Expand Up @@ -33,7 +38,7 @@ class SettingsGradle {
""
}

return """
val header = """
|pluginManagement {
| includeBuild("build-logic")
| repositories {
Expand All @@ -53,6 +58,11 @@ class SettingsGradle {
| }
|}
""".trimMargin()

val settingsModules = modulePaths.joinToString(separator = "") { path ->
"\ninclude (\":$path\")"
}
return "$header $settingsModules"
}

private fun develocityBlock(develocityUrl: String): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,15 +93,13 @@ class ProjectWriter(
develocity: Boolean,
projectName: String
) {
var settingsModules = ""

nodes.forEach {
val layerName = nameMaps.layerNames[it.layer] ?: "layer_${it.layer}"
val moduleName = nameMaps.moduleNames[it.id] ?: it.id
settingsModules += "\ninclude (\":$layerName:$moduleName\")"
val modulePaths = nodes.map { node ->
val layerName = nameMaps.layerNames[node.layer] ?: "layer_${node.layer}"
val moduleName = nameMaps.moduleNames[node.id] ?: node.id
"$layerName:$moduleName"
}
val settingsGradleContent = SettingsGradle().get(versions, develocity, projectName, modulePaths)
languages.forEach {
val settingsGradleContent = "${SettingsGradle().get(versions, develocity, projectName)} $settingsModules"
File("${it.projectName}/settings.${it.extension}").projectFile(settingsGradleContent)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,48 @@ class SettingsGradleTest {
assertTrue(result.contains("com.fueledbycaffeine.spotlight"))
assertTrue(result.contains("1.4.1"))
}

@Test
fun `renders module include statements for mapped paths`() {
val result = SettingsGradle().get(
Versions(),
develocity = false,
projectName = "testProject",
modulePaths = listOf("layer_1:sample-lib", "app:app")
)

assertTrue(result.contains("include (\":layer_1:sample-lib\")"))
assertTrue(result.contains("include (\":app:app\")"))
}

@Test
fun `preserves module include ordering`() {
val result = SettingsGradle().get(
Versions(),
develocity = false,
projectName = "testProject",
modulePaths = listOf("layer_0:alpha", "layer_1:beta", "app:app")
)

val alpha = result.indexOf("include (\":layer_0:alpha\")")
val beta = result.indexOf("include (\":layer_1:beta\")")
val app = result.indexOf("include (\":app:app\")")

assertTrue(alpha >= 0)
assertTrue(beta > alpha)
assertTrue(app > beta)
}

@Test
fun `appends includes after settings header with legacy spacing`() {
val withModules = SettingsGradle().get(
Versions(),
develocity = false,
projectName = "testProject",
modulePaths = listOf("layer_1:lib")
)

assertTrue(withModules.contains("} \ninclude (\":layer_1:lib\")"))
assertTrue(withModules.endsWith("include (\":layer_1:lib\")"))
}
}
Loading