Compare commits

...

5 Commits

Author SHA1 Message Date
Cloudburst 711629926e
Merge pull request #1 from recloudstream/other-hosters 2022-08-31 10:39:31 +02:00
Cloudburst a52375b346 fix url stuff 2022-08-31 10:26:20 +02:00
Cloudburst 2448a204df assume github as default 2022-08-31 10:02:30 +02:00
Cloudburst 3580feb0ae some small aapt tweaks 2022-08-31 09:57:35 +02:00
Cloudburst 17997e15c0 start adding support for hosters other than github 2022-08-25 17:59:34 +02:00
3 changed files with 53 additions and 14 deletions

View File

@ -16,6 +16,8 @@ abstract class CloudstreamExtension @Inject constructor(project: Project) {
var repository: Repo? = null
internal set
var buildBranch: String = "builds"
fun overrideUrlPrefix(url: String) {
if (apkinfo == null) {
@ -24,16 +26,51 @@ abstract class CloudstreamExtension @Inject constructor(project: Project) {
apkinfo!!.urlPrefix = url
}
fun setRepo(user: String, repo: String) {
repository = Repo(user, repo)
fun setRepo(user: String, repo: String, url: String, rawLinkFormat: String) {
repository = Repo(user, repo, url, rawLinkFormat)
}
fun setRepo(identifier: String) {
val split = identifier
.removePrefix("https://")
.removePrefix("github.com")
.removeSurrounding("/")
fun setRepo(user: String, repo: String, type: String) {
when {
type == "github" -> setRepo(user, repo, "https://github.com/${user}/${repo}", "https://raw.githubusercontent.com/${user}/${repo}/%branch%/%filename%")
type == "gitlab" -> setRepo(user, repo, "https://gitlab.com/${user}/${repo}", "https://gitlab.com/${user}/${repo}/-/raw/%branch%/%filename%")
type.startsWith("gitlab-") -> {
val domain = type.removePrefix("gitlab-")
setRepo(user, repo, "https://${domain}/${user}/${repo}", "https://${domain}/${user}/${repo}/-/raw/%branch%/%filename%")
}
type.startsWith("gitea-") -> {
val domain = type.removePrefix("gitea-")
setRepo(user, repo, "https://${domain}/${user}/${repo}", "https://${domain}/${user}/${repo}/raw/branch/%branch%/%filename%")
}
else -> throw IllegalArgumentException("Unknown type ${type}. Use github, gitlab, gitlab-<domain> or gitea-<domain> or set repository via setRepo(user, repo, url, rawLinkFormat)")
}
}
fun setRepo(url: String) {
var type: String? = null
var split = when {
url.startsWith("https://github.com") -> {
type = "github"
url
.removePrefix("https://")
.removePrefix("github.com")
}
url.startsWith("https://gitlab.com") -> {
type = "gitlab"
url
.removePrefix("https://")
.removePrefix("gitlab.com")
}
!url.startsWith("https://") -> { // assume default as github
type = "github"
url
}
else -> throw IllegalArgumentException("Unknown domain, please set repository via setRepo(user, repo, type)")
}
.removePrefix("/")
.removeSuffix("/")
.split("/")
repository = Repo(split[0], split[1])
setRepo(split[0], split[1], type)
}
internal var pluginClassName: String? = null
@ -55,12 +92,11 @@ 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}"
class Repo(val user: String, val repo: String, val url: String, val rawLinkFormat: String) {
fun getRawLink(filename: String, branch: String): String {
return "https://raw.githubusercontent.com/${user}/${repo}/${branch}/${filename}"
return rawLinkFormat
.replace("%filename%", filename)
.replace("%branch%", branch)
}
}

View File

@ -36,7 +36,7 @@ fun Project.makePluginEntry(): PluginEntry {
val repo = extension.repository
return PluginEntry(
url = (if (repo == null) "" else repo.getRawLink("${this.name}.cs3", "builds")),
url = (if (repo == null) "" else repo.getRawLink("${this.name}.cs3", extension.buildBranch)),
status = extension.status,
version = version ?: -1,
name = this.name,

View File

@ -32,6 +32,7 @@ abstract class CompileResourcesTask : Exec() {
executable = aaptExecutable.path
args("compile")
args("--dir", input.asFile.get().path)
args("-v")
args("-o", tmpRes.path)
execute()
}
@ -49,6 +50,8 @@ abstract class CompileResourcesTask : Exec() {
args("-R", tmpRes.path)
args("--manifest", manifestFile.asFile.get().path)
args("--auto-add-overlay")
args("--warn-manifest-validation")
args("-v")
args("-o", outputFile.asFile.get().path)
execute()
}