2022-08-04 11:30:09 +00:00
|
|
|
package com.lagradost.cloudstream3.gradle.tasks
|
|
|
|
|
|
|
|
import com.lagradost.cloudstream3.gradle.getCloudstream
|
|
|
|
import com.lagradost.cloudstream3.gradle.entities.PluginManifest
|
2022-08-07 19:04:52 +00:00
|
|
|
import com.lagradost.cloudstream3.gradle.makeManifest
|
2022-08-04 11:30:09 +00:00
|
|
|
import com.android.build.gradle.BaseExtension
|
|
|
|
import com.android.build.gradle.tasks.ProcessLibraryManifest
|
|
|
|
import groovy.json.JsonBuilder
|
|
|
|
import org.gradle.api.Project
|
|
|
|
import org.gradle.api.tasks.AbstractCopyTask
|
|
|
|
import org.gradle.api.tasks.bundling.Zip
|
|
|
|
import org.gradle.api.tasks.compile.AbstractCompile
|
2022-08-06 13:34:15 +00:00
|
|
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
2022-08-04 11:30:09 +00:00
|
|
|
|
|
|
|
const val TASK_GROUP = "cloudstream"
|
|
|
|
|
|
|
|
fun registerTasks(project: Project) {
|
|
|
|
val extension = project.extensions.getCloudstream()
|
|
|
|
val intermediates = project.buildDir.resolve("intermediates")
|
|
|
|
|
2022-08-08 07:32:27 +00:00
|
|
|
if (project.rootProject.tasks.findByName("makePluginsJson") == null) {
|
|
|
|
project.rootProject.tasks.register("makePluginsJson", MakePluginsJsonTask::class.java) {
|
|
|
|
it.group = TASK_GROUP
|
|
|
|
|
|
|
|
it.outputs.upToDateWhen { false }
|
|
|
|
|
|
|
|
it.outputFile.set(it.project.buildDir.resolve("plugins.json"))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-08-04 11:30:09 +00:00
|
|
|
project.tasks.register("genSources", GenSourcesTask::class.java) {
|
|
|
|
it.group = TASK_GROUP
|
|
|
|
}
|
|
|
|
|
|
|
|
val pluginClassFile = intermediates.resolve("pluginClass")
|
|
|
|
|
|
|
|
val compileDex = project.tasks.register("compileDex", CompileDexTask::class.java) {
|
|
|
|
it.group = TASK_GROUP
|
|
|
|
|
|
|
|
it.pluginClassFile.set(pluginClassFile)
|
|
|
|
|
2022-08-06 13:34:15 +00:00
|
|
|
val kotlinTask = project.tasks.findByName("compileDebugKotlin") as KotlinCompile?
|
|
|
|
if (kotlinTask != null) {
|
|
|
|
it.dependsOn(kotlinTask)
|
|
|
|
it.input.from(kotlinTask.destinationDirectory)
|
|
|
|
}
|
|
|
|
|
|
|
|
val javacTask = project.tasks.findByName("compileDebugJavaWithJavac") as AbstractCompile?
|
|
|
|
if (javacTask != null) {
|
|
|
|
it.dependsOn(javacTask)
|
|
|
|
it.input.from(javacTask.destinationDirectory)
|
2022-08-04 11:30:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
it.outputFile.set(intermediates.resolve("classes.dex"))
|
|
|
|
}
|
|
|
|
|
|
|
|
project.afterEvaluate {
|
|
|
|
project.tasks.register("make", Zip::class.java) {
|
|
|
|
val compileDexTask = compileDex.get()
|
|
|
|
it.dependsOn(compileDexTask)
|
|
|
|
|
|
|
|
val manifestFile = intermediates.resolve("manifest.json")
|
|
|
|
it.from(manifestFile)
|
|
|
|
it.doFirst {
|
|
|
|
if (extension.pluginClassName == null) {
|
|
|
|
if (pluginClassFile.exists()) {
|
|
|
|
extension.pluginClassName = pluginClassFile.readText()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
manifestFile.writeText(
|
2022-08-07 19:04:52 +00:00
|
|
|
JsonBuilder(project.makeManifest()).toPrettyString()
|
2022-08-04 11:30:09 +00:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
it.from(compileDexTask.outputFile)
|
|
|
|
|
|
|
|
val zip = it as Zip
|
|
|
|
//zip.dependsOn(compileResources.get())
|
|
|
|
zip.isPreserveFileTimestamps = false
|
|
|
|
zip.archiveBaseName.set(project.name)
|
2022-08-08 07:32:27 +00:00
|
|
|
zip.archiveExtension.set("cs3")
|
2022-08-04 11:30:09 +00:00
|
|
|
zip.archiveVersion.set("")
|
|
|
|
zip.destinationDirectory.set(project.buildDir)
|
|
|
|
|
|
|
|
it.doLast { task ->
|
|
|
|
task.logger.lifecycle("Made Cloudstream package at ${task.outputs.files.singleFile}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project.tasks.register("cleanCache", CleanCacheTask::class.java) {
|
|
|
|
it.group = TASK_GROUP
|
|
|
|
}
|
2022-08-04 13:53:32 +00:00
|
|
|
|
|
|
|
project.tasks.register("deployWithAdb", DeployWithAdbTask::class.java) {
|
|
|
|
it.group = TASK_GROUP
|
|
|
|
it.dependsOn("make")
|
|
|
|
}
|
2022-08-04 11:30:09 +00:00
|
|
|
}
|