mirror of
https://github.com/recloudstream/gradle.git
synced 2024-08-14 23:56:59 +00:00
update PluginEntry and PluginManifest
This commit is contained in:
parent
2b98fcdfde
commit
07c70ccfbd
6 changed files with 60 additions and 22 deletions
|
@ -12,6 +12,9 @@ abstract class CloudstreamExtension @Inject constructor(project: Project) {
|
|||
var apkinfo: ApkInfo? = null
|
||||
internal set
|
||||
|
||||
var repository: Repo? = null
|
||||
internal set
|
||||
|
||||
fun overrideUrlPrefix(url: String) {
|
||||
if (apkinfo == null) {
|
||||
apkinfo = ApkInfo(this, "pre-release")
|
||||
|
@ -19,12 +22,15 @@ abstract class CloudstreamExtension @Inject constructor(project: Project) {
|
|||
apkinfo!!.urlPrefix = url
|
||||
}
|
||||
|
||||
fun setRepo(user: String, repo: String) {
|
||||
repository = Repo(user, repo)
|
||||
}
|
||||
|
||||
internal var pluginClassName: String? = null
|
||||
|
||||
val repositoryUrl: Property<String> = project.objects.property(String::class.java)
|
||||
val description: Property<String> = project.objects.property(String::class.java)
|
||||
val authors: ListProperty<String> = project.objects.listProperty(String::class.java)
|
||||
val isAdult: Property<Boolean> = project.objects.property(Boolean::class.java)
|
||||
val adult: Property<Boolean> = project.objects.property(Boolean::class.java)
|
||||
val status: Property<Int> = project.objects.property(Int::class.java)
|
||||
}
|
||||
|
||||
|
@ -35,6 +41,15 @@ class ApkInfo(extension: CloudstreamExtension, release: String) {
|
|||
val jarFile = cache.resolve("cloudstream.jar")
|
||||
}
|
||||
|
||||
class Repo(val user: String, val repo: String) {
|
||||
val url: String
|
||||
get() = "https://github.com/${user}/${repo}"
|
||||
|
||||
fun getRawLink(filename: String, branch: String): String {
|
||||
return "https://raw.githubusercontent.com/${user}/${repo}/${branch}/${filename}"
|
||||
}
|
||||
}
|
||||
|
||||
fun ExtensionContainer.getCloudstream(): CloudstreamExtension {
|
||||
return getByName("cloudstream") as CloudstreamExtension
|
||||
}
|
||||
|
|
|
@ -2,30 +2,45 @@ package com.lagradost.cloudstream3.gradle
|
|||
|
||||
import org.gradle.api.Project
|
||||
import com.lagradost.cloudstream3.gradle.getCloudstream
|
||||
import com.lagradost.cloudstream3.gradle.entities.PluginManifest
|
||||
import com.lagradost.cloudstream3.gradle.entities.*
|
||||
import groovy.json.JsonBuilder
|
||||
|
||||
fun Project.makeManifest(skipClass: Boolean): PluginManifest {
|
||||
fun Project.makeManifest(): PluginManifest {
|
||||
val extension = this.extensions.getCloudstream()
|
||||
|
||||
require(this.version != "unspecified") {
|
||||
"No version is set"
|
||||
}
|
||||
|
||||
if (!skipClass) {
|
||||
require(extension.pluginClassName != null) {
|
||||
"No plugin class found, make sure your plugin class is annotated with @CloudstreamPlugin"
|
||||
}
|
||||
require(extension.pluginClassName != null) {
|
||||
"No plugin class found, make sure your plugin class is annotated with @CloudstreamPlugin"
|
||||
}
|
||||
|
||||
return PluginManifest(
|
||||
pluginClassName = extension.pluginClassName,
|
||||
name = this.name,
|
||||
version = this.version.toString(),
|
||||
authors = extension.authors.getOrElse(listOf()),
|
||||
repositoryUrl = extension.repositoryUrl.orNull,
|
||||
description = extension.description.orNull,
|
||||
isAdult = extension.isAdult.getOrElse(false),
|
||||
status = extension.status.getOrElse(3)
|
||||
pluginVersion = this.version.toString()
|
||||
)
|
||||
}
|
||||
|
||||
fun Project.makePluginEntry(): PluginEntry {
|
||||
val extension = this.extensions.getCloudstream()
|
||||
|
||||
require(this.version != "unspecified") {
|
||||
"No version is set"
|
||||
}
|
||||
|
||||
val repo = extension.repository
|
||||
|
||||
return PluginEntry(
|
||||
url = (if (repo == null) "" else repo.getRawLink("${this.name}.cs3", "builds")),
|
||||
status = extension.status.getOrElse(3),
|
||||
version = this.version.toString(),
|
||||
name = this.name,
|
||||
internalName = this.name,
|
||||
authors = extension.authors.getOrElse(listOf()),
|
||||
description = extension.description.orNull,
|
||||
repositoryUrl = (if (repo == null) null else repo.url),
|
||||
isAdult = extension.adult.getOrElse(false)
|
||||
)
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package com.lagradost.cloudstream3.gradle.entities
|
||||
|
||||
data class PluginEntry(
|
||||
val url: String,
|
||||
val status: Int,
|
||||
val version: String,
|
||||
val name: String,
|
||||
val internalName: String,
|
||||
val authors: List<String>,
|
||||
val description: String?,
|
||||
val repositoryUrl: String?,
|
||||
val isAdult: Boolean,
|
||||
)
|
|
@ -3,10 +3,5 @@ package com.lagradost.cloudstream3.gradle.entities
|
|||
data class PluginManifest(
|
||||
val pluginClassName: String?,
|
||||
val name: String,
|
||||
val version: String,
|
||||
val authors: List<String>,
|
||||
val repositoryUrl: String?,
|
||||
val description: String?,
|
||||
val isAdult: Boolean,
|
||||
val status: Int
|
||||
val pluginVersion: String
|
||||
)
|
|
@ -1,8 +1,8 @@
|
|||
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 com.lagradost.cloudstream3.gradle.makePluginEntry
|
||||
import com.lagradost.cloudstream3.gradle.entities.PluginEntry
|
||||
import groovy.json.JsonBuilder
|
||||
import groovy.json.JsonGenerator
|
||||
import org.gradle.api.DefaultTask
|
||||
|
@ -17,12 +17,12 @@ abstract class MakePluginsJsonTask : DefaultTask() {
|
|||
|
||||
@TaskAction
|
||||
fun makePluginsJson() {
|
||||
val lst = LinkedList<PluginManifest>()
|
||||
val lst = LinkedList<PluginEntry>()
|
||||
|
||||
for (subproject in project.allprojects) {
|
||||
val cloudstream = subproject.extensions.findCloudstream() ?: continue
|
||||
|
||||
lst.add(subproject.makeManifest(true))
|
||||
lst.add(subproject.makePluginEntry())
|
||||
}
|
||||
|
||||
outputFile.asFile.get().writeText(
|
||||
|
|
|
@ -70,7 +70,7 @@ fun registerTasks(project: Project) {
|
|||
}
|
||||
|
||||
manifestFile.writeText(
|
||||
JsonBuilder(project.makeManifest(false),
|
||||
JsonBuilder(project.makeManifest(),
|
||||
JsonGenerator.Options()
|
||||
.excludeNulls()
|
||||
.build()
|
||||
|
|
Loading…
Reference in a new issue