Merge pull request #2042 from Lucwousin/boo-strap

bootstrap: Halve plugin class in size
This commit is contained in:
Owain van Brakel
2019-11-19 00:35:29 +01:00
committed by GitHub
2 changed files with 35 additions and 81 deletions

View File

@@ -1,85 +1,42 @@
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.register
import java.io.File
import org.gradle.kotlin.dsl.*
class BootstrapPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.tasks.register<BootstrapTask>("bootstrapStaging") {
dependsOn("jar")
dependsOn("shadowJar")
type = "staging"
clientJar = project.tasks["jar"].outputs.files.singleFile
dependsOn(project.parent!!.project(":runelite-api").tasks["jar"])
dependsOn(project.parent!!.project(":runescape-api").tasks["jar"])
dependsOn(project.parent!!.project(":http-api").tasks["jar"])
dependsOn(project.parent!!.project(":injected-client").tasks["jar"])
doLast {
project.copy {
from(project.tasks["jar"])
from(project.parent!!.project(":runelite-api").tasks["jar"])
from(project.parent!!.project(":runescape-api").tasks["jar"])
from(project.parent!!.project(":http-api").tasks["jar"])
from(project.parent!!.project(":injected-client").tasks["jar"])
into("${project.buildDir}/bootstrap/${type}/")
}
}
override fun apply(project: Project): Unit = with(project) {
val clientJar by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = true
isTransitive = false
}
val bootstrapDependencies by configurations.creating {
extendsFrom(clientJar)
isCanBeConsumed = false
isCanBeResolved = true
isTransitive = false
}
project.tasks.register<BootstrapTask>("bootstrapStable") {
dependsOn("jar")
dependsOn("shadowJar")
type = "stable"
clientJar = project.tasks["jar"].outputs.files.singleFile
dependsOn(project.parent!!.project(":runelite-api").tasks["jar"])
dependsOn(project.parent!!.project(":runescape-api").tasks["jar"])
dependsOn(project.parent!!.project(":http-api").tasks["jar"])
dependsOn(project.parent!!.project(":injected-client").tasks["jar"])
doLast {
project.copy {
from(project.tasks["jar"])
from(project.parent!!.project(":runelite-api").tasks["jar"])
from(project.parent!!.project(":runescape-api").tasks["jar"])
from(project.parent!!.project(":http-api").tasks["jar"])
from(project.parent!!.project(":injected-client").tasks["jar"])
into("${project.buildDir}/bootstrap/${type}/")
}
}
dependencies {
clientJar(tasks["jar"].outputs.files)
bootstrapDependencies(project(":runelite-api"))
bootstrapDependencies(project(":runescape-api"))
bootstrapDependencies(project(":http-api"))
bootstrapDependencies(project(":injected-client"))
}
project.tasks.register<BootstrapTask>("bootstrapNightly") {
dependsOn("jar")
dependsOn("shadowJar")
tasks.register<BootstrapTask>("bootstrapStaging", "staging")
tasks.register<BootstrapTask>("bootstrapNightly", "nightly")
tasks.register<BootstrapTask>("bootstrapStable", "stable")
type = "nightly"
clientJar = project.tasks["jar"].outputs.files.singleFile
tasks.withType<BootstrapTask> {
dependsOn(bootstrapDependencies)
dependsOn(project.parent!!.project(":runelite-api").tasks["jar"])
dependsOn(project.parent!!.project(":runescape-api").tasks["jar"])
dependsOn(project.parent!!.project(":http-api").tasks["jar"])
dependsOn(project.parent!!.project(":injected-client").tasks["jar"])
this.clientJar = clientJar.singleFile
doLast {
project.copy {
from(project.tasks["jar"])
from(project.parent!!.project(":runelite-api").tasks["jar"])
from(project.parent!!.project(":runescape-api").tasks["jar"])
from(project.parent!!.project(":http-api").tasks["jar"])
from(project.parent!!.project(":injected-client").tasks["jar"])
into("${project.buildDir}/bootstrap/${type}/")
copy {
from(bootstrapDependencies)
into("${buildDir}/bootstrap/${type}/")
}
}
}

View File

@@ -1,7 +1,6 @@
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction
@@ -9,12 +8,9 @@ import org.gradle.kotlin.dsl.extra
import org.gradle.kotlin.dsl.get
import java.io.File
import java.security.MessageDigest
import javax.inject.Inject
open class BootstrapTask : DefaultTask() {
@Input
@Optional
var type: String? = "stable"
open class BootstrapTask @Inject constructor(@Input val type: String) : DefaultTask() {
@InputFile
@PathSensitive(PathSensitivity.ABSOLUTE)
@@ -42,10 +38,11 @@ open class BootstrapTask : DefaultTask() {
project.configurations["runtimeClasspath"].resolvedConfiguration.resolvedArtifacts.forEach {
val module = it.moduleVersion.id.toString()
val name = module.split(":")[1]
val group = module.split(":")[0]
val version = module.split(":")[2]
var path = ""
val splat = module.split(":")
val name = splat[1]
val group = splat[0]
val version = splat[2]
lateinit var path: String
if (it.file.name.contains(ProjectVersions.rlVersion)) {
path = "https://github.com/open-osrs/hosting/raw/master/${type}/${it.file.name}"
@@ -84,7 +81,7 @@ open class BootstrapTask : DefaultTask() {
}
@TaskAction
fun boostrap() {
fun bootstrap() {
val json = JsonBuilder(
"projectVersion" to ProjectVersions.openosrsVersion,
"minimumLauncherVersion" to ProjectVersions.launcherVersion,