project: Update injector

This commit is contained in:
Owain van Brakel
2022-06-23 18:26:28 +02:00
parent 50f415e8ba
commit e7dc8fd2c9
47 changed files with 1752 additions and 308 deletions

View File

@@ -16,13 +16,16 @@ import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
@CacheableTask
abstract class Inject: DefaultTask() {
abstract class Inject : DefaultTask() {
@get:Nested
abstract val extension: InjectExtension
@get:OutputFile
abstract val output: RegularFileProperty
@get:OutputFile
abstract val hash: RegularFileProperty
@TaskAction
fun inject() {
val vanilla = extension.vanilla.get().asFile
@@ -30,10 +33,11 @@ abstract class Inject: DefaultTask() {
val mixins = extension.mixins.get().asFile
val rsapi = project.zipTree(extension.rsapi)
val injector: InjectTaskHandler = Injection(vanilla, rsclient, mixins, rsapi)
val injector: InjectTaskHandler = Injection(vanilla, rsclient, mixins, rsapi, if (extension.development.isPresent) extension.development.get() else true)
injector.inject()
injector.save(output.get().asFile)
injector.hash(hash.get().asFile, vanilla)
}
}

View File

@@ -8,17 +8,23 @@
package com.openosrs.injector
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.provider.Property
import org.gradle.api.tasks.*
interface InjectExtension {
@get:Input
@get:Optional
val development: Property<Boolean>
@get:[InputFile PathSensitive(PathSensitivity.NONE)]
val vanilla: RegularFileProperty
@get:[InputFile PathSensitive(PathSensitivity.NONE)]
val rsclient: RegularFileProperty
@get:[InputFile PathSensitive(PathSensitivity.NONE)]
val mixins: RegularFileProperty
@get:[InputFile PathSensitive(PathSensitivity.NONE)]
val rsapi: RegularFileProperty
}

View File

@@ -10,19 +10,27 @@ package com.openosrs.injector
import org.gradle.api.Plugin
import org.gradle.api.Project
class InjectPlugin: Plugin<Project> {
override fun apply(project: Project) { with(project) {
val task = tasks.create("inject", Inject::class.java)
task.output.convention { file("$buildDir/libs/$name-$version.jar") }
class InjectPlugin : Plugin<Project> {
override fun apply(project: Project) {
with(project) {
val task = tasks.create("inject", Inject::class.java)
task.output.convention {
file("$buildDir/libs/injected-client.oprs")
}
task.hash.convention {
file("$buildDir/resources/main/client.hash")
}
artifacts {
it.add("runtimeElements", task.output)
artifacts {
it.add("runtimeElements", task.output)
it.add("runtimeElements", task.hash)
}
tasks.getByName("assemble") {
it.finalizedBy("inject")
}
extensions.add(InjectExtension::class.java, "injector", task.extension)
}
tasks.getByName("assemble") {
it.finalizedBy("inject")
}
extensions.add(InjectExtension::class.java, "injector", task.extension)
}}
}
}