diff --git a/buildSrc/src/main/kotlin/BootstrapPlugin.kt b/buildSrc/src/main/kotlin/BootstrapPlugin.kt index ff90211c7f..a28ee8ced1 100644 --- a/buildSrc/src/main/kotlin/BootstrapPlugin.kt +++ b/buildSrc/src/main/kotlin/BootstrapPlugin.kt @@ -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 { - override fun apply(project: Project) { - project.tasks.register("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("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("bootstrapNightly") { - dependsOn("jar") - dependsOn("shadowJar") + tasks.register("bootstrapStaging", "staging") + tasks.register("bootstrapNightly", "nightly") + tasks.register("bootstrapStable", "stable") - type = "nightly" - clientJar = project.tasks["jar"].outputs.files.singleFile + tasks.withType { + 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}/") } } } diff --git a/buildSrc/src/main/kotlin/BootstrapTask.kt b/buildSrc/src/main/kotlin/BootstrapTask.kt index a6e0652cea..60f5163696 100644 --- a/buildSrc/src/main/kotlin/BootstrapTask.kt +++ b/buildSrc/src/main/kotlin/BootstrapTask.kt @@ -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,