Skip to content

Commit bb94bf0

Browse files
committed
Refactored cleanup.gradle.kts:
* properly locate the `rootProject.name` * removed unnecessary rename operation of values in `gradle.properties` * Refactored `changePackageName` to more safely execute package renaming and modification.
1 parent 666daa7 commit bb94bf0

File tree

1 file changed

+39
-19
lines changed

1 file changed

+39
-19
lines changed

buildSrc/src/main/kotlin/cleanup.gradle.kts

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,8 @@ tasks.register("templateCleanup") {
2626
newValue = "com.$owner.$name"
2727
)
2828
file(path = "settings.gradle.kts").replace(
29-
oldValue = "rootProject.name = (\"compose-android-template\")",
30-
newValue = "rootProject.name = (\"$name\")"
31-
)
32-
file(path = "gradle.properties").replace(
33-
oldValue = "com.codermp.composeandroidtemplate",
34-
newValue = "com.$owner.$name"
29+
oldValue = "rootProject.name = \"compose-android-template\"",
30+
newValue = "rootProject.name = \"$name\""
3531
)
3632

3733
changePackageName(
@@ -40,7 +36,7 @@ tasks.register("templateCleanup") {
4036
)
4137

4238
// cleanup the cleanup :)
43-
file(path = ".github/workflows/cleanup.yaml").delete()
39+
file(path = ".github/workflows/cleanup.yml").delete()
4440
file(path = "build.gradle.kts").replace(
4541
oldValue = " cleanup\n",
4642
newValue = ""
@@ -54,10 +50,6 @@ fun String.sanitized() = replace(
5450
replacement = ""
5551
).lowercase()
5652

57-
fun File.replace(regex: Regex, replacement: String) {
58-
writeText(text = readText().replace(regex, replacement))
59-
}
60-
6153
fun File.replace(oldValue: String, newValue: String) {
6254
writeText(text = readText().replace(oldValue, newValue))
6355
}
@@ -66,8 +58,11 @@ fun srcDirectories() = projectDir.listFiles()!!
6658
.filter { it.isDirectory && it.name != "buildSrc" }
6759
.flatMap { it.listFiles()!!.filter { it.isDirectory && it.name == "src" } }
6860

61+
@Suppress("NestedBlockDepth")
6962
/**
7063
* Change the package name of the project.
64+
* @param owner The owner of the repository, usually the GitHub username.
65+
* @param name The name of the repository, usually the project name.
7166
*/
7267
fun changePackageName(owner: String, name: String) {
7368
srcDirectories().forEach {
@@ -77,14 +72,39 @@ fun changePackageName(owner: String, name: String) {
7772
it.replace("com.codermp.composeandroidtemplate", "com.$owner.$name")
7873
}
7974
}
80-
srcDirectories().forEach {
81-
it.listFiles()!!.filter { it.isDirectory } // down to src/main
82-
.flatMap { it.listFiles()!!.filter { it.isDirectory } } // down to src/main/java
83-
.forEach {
84-
val newDir = File(it, "com/$owner/$name")
85-
newDir.parentFile.mkdirs()
86-
File(it, "com/codermp/composeandroidtemplate").renameTo(newDir)
87-
File(it, "com/codermp").deleteRecursively()
75+
srcDirectories().forEach { srcDir ->
76+
srcDir
77+
.listFiles()!!
78+
.filter { it.isDirectory } // down to src/main, src/test, etc.
79+
.flatMap {
80+
it.listFiles()!!.filter { it.isDirectory } // down to src/main/java, etc.
81+
}
82+
.forEach { javaDir ->
83+
val oldPackageDir = File(javaDir, "com/codermp/composeandroidtemplate")
84+
85+
if (oldPackageDir.exists()) {
86+
val newPackageDir = File(javaDir, "com/$owner/$name")
87+
88+
// Create parent directories for new package
89+
newPackageDir.parentFile.mkdirs()
90+
91+
// Move files instead of renaming directory
92+
if (oldPackageDir.isDirectory) {
93+
oldPackageDir.listFiles()?.forEach { file ->
94+
val targetFile = File(newPackageDir, file.name)
95+
if (file.isDirectory) {
96+
file.copyRecursively(targetFile)
97+
} else {
98+
file.copyTo(targetFile)
99+
}
100+
}
101+
}
102+
103+
// Only delete old structure after successful copy
104+
if (newPackageDir.exists() && newPackageDir.listFiles()?.isNotEmpty() == true) {
105+
File(javaDir, "com/codermp").deleteRecursively()
106+
}
107+
}
88108
}
89109
}
90110
}

0 commit comments

Comments
 (0)