Halve bootstrapplugin in size

This commit is contained in:
Lucwousin
2019-11-15 19:46:14 +01:00
parent 0e4cf964eb
commit 8478941f95
2 changed files with 35 additions and 81 deletions

View File

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

View File

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