diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index efe93e9f8..5794f77e5 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -35,18 +35,10 @@ jobs: mkdir -p ~/.gradle cp .github/runner-files/ci-gradle.properties ~/.gradle/gradle.properties - - name: Build multi-source library + - name: Generate sources from the multi-source library uses: eskatos/gradle-command-action@v1 with: - arguments: :multisrc:assembleDebug - wrapper-cache-enabled: true - dependencies-cache-enabled: true - configuration-cache-enabled: true - - - name: Run multi-source generators - uses: eskatos/gradle-command-action@v1 - with: - arguments: :multisrc:runAllGenerators + arguments: :multisrc:multisrcGenerators wrapper-cache-enabled: true dependencies-cache-enabled: true configuration-cache-enabled: true diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml index 6b3b6773a..5a35634d6 100644 --- a/.github/workflows/build_push.yml +++ b/.github/workflows/build_push.yml @@ -46,22 +46,10 @@ jobs: mkdir -p ~/.gradle cp .github/runner-files/ci-gradle.properties ~/.gradle/gradle.properties - - name: Build multi-source library + - name: Generate sources from the multi-source library uses: eskatos/gradle-command-action@v1 with: - build-root-directory: master - wrapper-directory: master - arguments: :multisrc:assembleDebug - wrapper-cache-enabled: true - dependencies-cache-enabled: true - configuration-cache-enabled: true - - - name: Run multi-source generators - uses: eskatos/gradle-command-action@v1 - with: - build-root-directory: master - wrapper-directory: master - arguments: :multisrc:runAllGenerators + arguments: :multisrc:multisrcGenerators wrapper-cache-enabled: true dependencies-cache-enabled: true configuration-cache-enabled: true diff --git a/multisrc/build.gradle.kts b/multisrc/build.gradle.kts index c475ae01e..0ab32630d 100644 --- a/multisrc/build.gradle.kts +++ b/multisrc/build.gradle.kts @@ -21,7 +21,7 @@ repositories { apply("$rootDir/common-dependencies.gradle") tasks { - val runAllGenerators by registering { + val multisrcGenerators by registering { doLast { val isWindows = System.getProperty("os.name").toString().toLowerCase().contains("win") val classPath = (configurations.debugCompileOnly.get().asFileTree.toList() + @@ -46,5 +46,6 @@ tasks { throw Exception("Java process failed with exit code: $exitCode") } } + dependsOn("assembleDebug") } } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/ThemeSourceGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/ThemeSourceGenerator.kt index bd9d0d24b..a9134fb9f 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/ThemeSourceGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/ThemeSourceGenerator.kt @@ -68,12 +68,16 @@ interface ThemeSourceGenerator { """.trimIndent()) } - private fun writeAndroidManifest(androidManifestFile: File) { - androidManifestFile.writeText(""" + private fun writeAndroidManifest(androidManifestFile: File, manifestOverridesPath: String, source: ThemeSourceData, projectRootPath: String) { + val androidManifestOverride = File("$manifestOverridesPath/${source.pkgName}") + if (androidManifestOverride.exists()) + androidManifestOverride.copyRecursively(File(projectRootPath)) + else + androidManifestFile.writeText(""" - """.trimIndent()) + """.trimIndent()) } private fun createGradleProject(source: ThemeSourceData, themePkg: String, themeClass: String, baseVersionCode: Int, userDir: String) { @@ -82,6 +86,7 @@ interface ThemeSourceGenerator { val overridesPath = "$userDir/multisrc/overrides" // userDir = tachiyomi-extensions project root path val resOverridesPath = "$overridesPath/res/$themePkg" val srcOverridesPath = "$overridesPath/src/$themePkg" + val manifestOverridesPath = "$overridesPath/manifest/$themePkg" val projectGradleFile = File("$projectRootPath/build.gradle") val projectAndroidManifestFile = File("$projectRootPath/AndroidManifest.xml") @@ -93,7 +98,7 @@ interface ThemeSourceGenerator { cleanDirectory(projectRootFile) writeGradle(projectGradleFile, source, baseVersionCode) - writeAndroidManifest(projectAndroidManifestFile) + writeAndroidManifest(projectAndroidManifestFile, manifestOverridesPath, source, projectRootPath) writeSourceFiles(projectSrcPath, srcOverridesPath, source, themePkg, themeClass) copyThemeClasses(userDir, themePkg, projectRootPath)