@@ -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-
6153fun 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 */
7267fun 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