diff --git a/src/main/kotlin/com/lagradost/cloudstream3/gradle/tasks/MakePluginsJsonTask.kt b/src/main/kotlin/com/lagradost/cloudstream3/gradle/tasks/MakePluginsJsonTask.kt new file mode 100644 index 0000000..6c5a0e3 --- /dev/null +++ b/src/main/kotlin/com/lagradost/cloudstream3/gradle/tasks/MakePluginsJsonTask.kt @@ -0,0 +1,37 @@ +package com.lagradost.cloudstream3.gradle.tasks + +import com.lagradost.cloudstream3.gradle.findCloudstream +import com.lagradost.cloudstream3.gradle.makeManifest +import com.lagradost.cloudstream3.gradle.entities.PluginManifest +import groovy.json.JsonBuilder +import groovy.json.JsonGenerator +import org.gradle.api.DefaultTask +import org.gradle.api.file.RegularFileProperty +import org.gradle.api.tasks.OutputFile +import org.gradle.api.tasks.TaskAction +import java.util.LinkedList + +abstract class MakePluginsJsonTask : DefaultTask() { + @get:OutputFile + abstract val outputFile: RegularFileProperty + + @TaskAction + fun makePluginsJson() { + val lst = LinkedList() + + for (subproject in project.allprojects) { + val cloudstream = subproject.extensions.findCloudstream() ?: continue + + lst.add(subproject.makeManifest()) + } + + outputFile.asFile.get().writeText( + JsonBuilder( + lst, + JsonGenerator.Options() + .excludeNulls() + .build() + ).toString() + ) + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/lagradost/cloudstream3/gradle/tasks/Tasks.kt b/src/main/kotlin/com/lagradost/cloudstream3/gradle/tasks/Tasks.kt index df9000a..b0361dd 100644 --- a/src/main/kotlin/com/lagradost/cloudstream3/gradle/tasks/Tasks.kt +++ b/src/main/kotlin/com/lagradost/cloudstream3/gradle/tasks/Tasks.kt @@ -18,6 +18,16 @@ fun registerTasks(project: Project) { val extension = project.extensions.getCloudstream() val intermediates = project.buildDir.resolve("intermediates") + 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")) + } + } + project.tasks.register("genSources", GenSourcesTask::class.java) { it.group = TASK_GROUP } @@ -69,6 +79,7 @@ fun registerTasks(project: Project) { //zip.dependsOn(compileResources.get()) zip.isPreserveFileTimestamps = false zip.archiveBaseName.set(project.name) + zip.archiveExtension.set("cs3") zip.archiveVersion.set("") zip.destinationDirectory.set(project.buildDir) @@ -82,11 +93,6 @@ fun registerTasks(project: Project) { it.group = TASK_GROUP } - project.tasks.register("dumpManifest", DumpManifestTask::class.java) { - it.group = TASK_GROUP - it.dependsOn("make") - } - project.tasks.register("deployWithAdb", DeployWithAdbTask::class.java) { it.group = TASK_GROUP it.dependsOn("make")