use managed objects, allow caching, require less config
This commit is contained in:
@@ -9,40 +9,31 @@ package com.openosrs.injector
|
|||||||
|
|
||||||
import com.openosrs.injector.injection.InjectTaskHandler
|
import com.openosrs.injector.injection.InjectTaskHandler
|
||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
import org.gradle.api.tasks.InputFile
|
import org.gradle.api.file.RegularFileProperty
|
||||||
|
import org.gradle.api.tasks.CacheableTask
|
||||||
|
import org.gradle.api.tasks.Nested
|
||||||
import org.gradle.api.tasks.OutputFile
|
import org.gradle.api.tasks.OutputFile
|
||||||
import org.gradle.api.tasks.TaskAction
|
import org.gradle.api.tasks.TaskAction
|
||||||
|
|
||||||
open class Inject: DefaultTask() {
|
@CacheableTask
|
||||||
@InputFile
|
abstract class Inject: DefaultTask() {
|
||||||
val vanilla = project.objects.fileProperty()
|
@get:Nested
|
||||||
|
abstract val extension: InjectExtension
|
||||||
|
|
||||||
@InputFile
|
@get:OutputFile
|
||||||
val rsclient = project.objects.fileProperty()
|
abstract val output: RegularFileProperty
|
||||||
|
|
||||||
@InputFile
|
|
||||||
val mixins = project.objects.fileProperty()
|
|
||||||
|
|
||||||
@InputFile
|
|
||||||
val rsapi = project.objects.fileProperty()
|
|
||||||
|
|
||||||
@OutputFile
|
|
||||||
val output = project.objects.fileProperty().convention {
|
|
||||||
project.file("${project.buildDir}/libs/${project.name}-${project.version}.jar")
|
|
||||||
}
|
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
fun inject() {
|
fun inject() {
|
||||||
val vanilla = this.vanilla.get().asFile
|
val vanilla = extension.vanilla.get().asFile
|
||||||
val rsclient = this.rsclient.get().asFile
|
val rsclient = extension.rsclient.get().asFile
|
||||||
val mixins = this.mixins.get().asFile
|
val mixins = extension.mixins.get().asFile
|
||||||
val rsapi = project.zipTree(this.rsapi)
|
val rsapi = project.zipTree(extension.rsapi)
|
||||||
val output = this.output.asFile
|
|
||||||
|
|
||||||
val injector: InjectTaskHandler = Injection(vanilla, rsclient, mixins, rsapi)
|
val injector: InjectTaskHandler = Injection(vanilla, rsclient, mixins, rsapi)
|
||||||
|
|
||||||
injector.inject()
|
injector.inject()
|
||||||
|
|
||||||
injector.save(output.get())
|
injector.save(output.get().asFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
25
src/main/kotlin/com/openosrs/injector/InjectExtension.kt
Normal file
25
src/main/kotlin/com/openosrs/injector/InjectExtension.kt
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Lucas <https://github.com/Lucwousin>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This code is licensed under GPL3, see the complete license in
|
||||||
|
* the LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
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
|
||||||
|
|
||||||
|
interface InjectExtension {
|
||||||
|
@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
|
||||||
|
}
|
||||||
|
|
||||||
@@ -11,17 +11,18 @@ import org.gradle.api.Plugin
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
|
||||||
class InjectPlugin: Plugin<Project> {
|
class InjectPlugin: Plugin<Project> {
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) { with(project) {
|
||||||
val extension = project.extensions.create("injector", Injextention::class.java, project)
|
val task = tasks.create("inject", Inject::class.java)
|
||||||
|
task.output.convention { file("$buildDir/libs/$name-$version.jar") }
|
||||||
|
|
||||||
project.tasks.create("inject", Inject::class.java) {
|
artifacts {
|
||||||
it.vanilla.set(extension.vanilla)
|
it.add("runtimeElements", task.output)
|
||||||
it.rsclient.set(extension.rsclient)
|
|
||||||
it.mixins.set(extension.mixins)
|
|
||||||
it.rsapi.set(extension.rsapi)
|
|
||||||
if (extension.output.isPresent) {
|
|
||||||
it.output.set(extension.output)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
tasks.getByName("assemble") {
|
||||||
|
it.finalizedBy("inject")
|
||||||
|
}
|
||||||
|
|
||||||
|
extensions.add(InjectExtension::class.java, "injector", task.extension)
|
||||||
|
}}
|
||||||
}
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2019, Lucas <https://github.com/Lucwousin>
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This code is licensed under GPL3, see the complete license in
|
|
||||||
* the LICENSE file in the root directory of this source tree.
|
|
||||||
*/
|
|
||||||
package com.openosrs.injector
|
|
||||||
|
|
||||||
import org.gradle.api.Project
|
|
||||||
|
|
||||||
open class Injextention(project: Project) {
|
|
||||||
val vanilla = project.objects.fileProperty()
|
|
||||||
val rsclient = project.objects.fileProperty()
|
|
||||||
val mixins = project.objects.fileProperty()
|
|
||||||
val rsapi = project.objects.fileProperty()
|
|
||||||
val output = project.objects.fileProperty()
|
|
||||||
}
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user