diff --git a/multisrc/src/main/java/generator/ThemeSourceGenerator.kt b/multisrc/src/main/java/generator/ThemeSourceGenerator.kt
index e33e7f92b..47d784f22 100644
--- a/multisrc/src/main/java/generator/ThemeSourceGenerator.kt
+++ b/multisrc/src/main/java/generator/ThemeSourceGenerator.kt
@@ -59,35 +59,40 @@ interface ThemeSourceGenerator {
val placeholders = mapOf(
"SOURCEHOST" to source.baseUrl.toHttpUrlOrNull()?.host,
"SOURCESCHEME" to source.baseUrl.toHttpUrlOrNull()?.scheme
- ).filter { it.value != null }
+ )
+
+ val placeholdersStr = placeholders
+ .filter { it.value != null }
+ .map { "${" ".repeat(12)}${it.key}: \"${it.value}\"" }
+ .joinToString(",\n")
gradle.writeText(
"""
- // THIS FILE IS AUTO-GENERATED; DO NOT EDIT
- apply plugin: 'com.android.application'
- apply plugin: 'kotlin-android'
- apply plugin: 'kotlinx-serialization'
-
- ext {
- extName = '${source.name}'
- pkgNameSuffix = '${pkgNameSuffix(source, ".")}'
- extClass = '.${source.className}'
- extFactory = '$themePkg'
- extVersionCode = ${baseVersionCode + source.overrideVersionCode + multisrcLibraryVersion}
- ${if (source.isNsfw) "isNsfw = true\n" else ""}
- }
- $defaultAdditionalGradleText
- $additionalGradleOverrideText
- apply from: "${'$'}rootDir/common.gradle"
-
- android {
- defaultConfig {
- manifestPlaceholders += [
-${placeholders.map { "${" ".repeat(28)}${it.key}: \"${it.value}\""}.joinToString(",\n")}
- ]
- }
- }
- """.trimIndent()
+ |// THIS FILE IS AUTO-GENERATED; DO NOT EDIT
+ |apply plugin: 'com.android.application'
+ |apply plugin: 'kotlin-android'
+ |apply plugin: 'kotlinx-serialization'
+ |
+ |ext {
+ | extName = '${source.name}'
+ | pkgNameSuffix = '${pkgNameSuffix(source, ".")}'
+ | extClass = '.${source.className}'
+ | extFactory = '$themePkg'
+ | extVersionCode = ${baseVersionCode + source.overrideVersionCode + multisrcLibraryVersion}
+ | ${if (source.isNsfw) "isNsfw = true\n" else ""}
+ |}
+ |$defaultAdditionalGradleText
+ |$additionalGradleOverrideText
+ |apply from: "${'$'}rootDir/common.gradle"
+ |
+ |android {
+ | defaultConfig {
+ | manifestPlaceholders += [
+ |$placeholdersStr
+ | ]
+ | }
+ |}
+ """.trimMargin()
)
}
@@ -101,10 +106,10 @@ ${placeholders.map { "${" ".repeat(28)}${it.key}: \"${it.value}\""}.joinToString
} else {
androidManifestFile.writeText(
"""
-
-
-
- """.trimIndent()
+ |
+ |
+ |
+ """.trimMargin()
)
}
}
@@ -144,17 +149,15 @@ ${placeholders.map { "${" ".repeat(28)}${it.key}: \"${it.value}\""}.joinToString
private fun copyThemeReadmes(userDir: String, themePkg: String, overridesPath: String, projectRootPath: String) {
val sourcePath = "$userDir/multisrc/src/main/java/${themeSuffix(themePkg, "/")}"
- val destinationPath = "$projectRootPath"
- File(destinationPath).mkdirs()
+ File(projectRootPath).mkdirs()
listOf(sourcePath, overridesPath).forEach { path ->
- File(path)
- ?.list()
+ File(path).list()
?.filter { it.endsWith("README.md") || it.endsWith("CHANGELOG.md") }
?.forEach {
Files.copy(
File("$path/$it").toPath(),
- File("$destinationPath/$it").toPath(),
+ File("$projectRootPath/$it").toPath(),
StandardCopyOption.REPLACE_EXISTING
)
}
@@ -167,8 +170,7 @@ ${placeholders.map { "${" ".repeat(28)}${it.key}: \"${it.value}\""}.joinToString
val themeDestPath = "$projectRootPath/src/${themeSuffix(themePkg, "/")}"
File(themeDestPath).mkdirs()
- File(themeSrcPath)
- ?.list()
+ File(themeSrcPath).list()
?.filter { it.endsWith(".kt") && !it.endsWith("Generator.kt") }
?.forEach { Files.copy(File("$themeSrcPath/$it").toPath(), File("$themeDestPath/$it").toPath(), StandardCopyOption.REPLACE_EXISTING) }
}
@@ -207,25 +209,26 @@ ${placeholders.map { "${" ".repeat(28)}${it.key}: \"${it.value}\""}.joinToString
}
"""
- class ${source.className} : SourceFactory {
- override fun createSources() = listOf(
- ${sourceClasses.joinToString(",\n")}
- )
- }
- """.trimIndent()
+ |class ${source.className} : SourceFactory {
+ | override fun createSources() = listOf(
+ | ${sourceClasses.joinToString(",\n")}
+ | )
+ |}
+ """.trimMargin()
}
}
File("$classPath/${source.className}.kt").writeText(
- """/* ktlint-disable */
- // THIS FILE IS AUTO-GENERATED; DO NOT EDIT
- package eu.kanade.tachiyomi.extension.${pkgNameSuffix(source, ".")}
-
- import eu.kanade.tachiyomi.multisrc.$themePkg.$themeClass
- ${if (source is ThemeSourceData.MultiLang) "import eu.kanade.tachiyomi.source.SourceFactory" else ""}
-
- ${factoryClassText()}
- """.trimIndent()
+ """
+ |/* ktlint-disable */
+ |// THIS FILE IS AUTO-GENERATED; DO NOT EDIT
+ |package eu.kanade.tachiyomi.extension.${pkgNameSuffix(source, ".")}
+ |
+ |import eu.kanade.tachiyomi.multisrc.$themePkg.$themeClass
+ |${if (source is ThemeSourceData.MultiLang) "import eu.kanade.tachiyomi.source.SourceFactory" else ""}
+ |
+ |${factoryClassText()}
+ """.trimMargin()
)
}
@@ -271,7 +274,7 @@ sealed class ThemeSourceData {
val lang: String,
override val isNsfw: Boolean = false,
override val className: String = name.replace(" ", ""),
- override val pkgName: String = className.toLowerCase(Locale.ENGLISH),
+ override val pkgName: String = className.lowercase(Locale.ENGLISH),
override val sourceName: String = name,
override val overrideVersionCode: Int = 0,
) : ThemeSourceData()
@@ -282,7 +285,7 @@ sealed class ThemeSourceData {
val langs: List,
override val isNsfw: Boolean = false,
override val className: String = name.replace(" ", "") + "Factory",
- override val pkgName: String = className.substringBefore("Factory").toLowerCase(Locale.ENGLISH),
+ override val pkgName: String = className.substringBefore("Factory").lowercase(Locale.ENGLISH),
override val sourceName: String = name,
override val overrideVersionCode: Int = 0,
) : ThemeSourceData()