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 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.TaskAction
|
||||
|
||||
open class Inject: DefaultTask() {
|
||||
@InputFile
|
||||
val vanilla = project.objects.fileProperty()
|
||||
@CacheableTask
|
||||
abstract class Inject: DefaultTask() {
|
||||
@get:Nested
|
||||
abstract val extension: InjectExtension
|
||||
|
||||
@InputFile
|
||||
val rsclient = project.objects.fileProperty()
|
||||
|
||||
@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")
|
||||
}
|
||||
@get:OutputFile
|
||||
abstract val output: RegularFileProperty
|
||||
|
||||
@TaskAction
|
||||
fun inject() {
|
||||
val vanilla = this.vanilla.get().asFile
|
||||
val rsclient = this.rsclient.get().asFile
|
||||
val mixins = this.mixins.get().asFile
|
||||
val rsapi = project.zipTree(this.rsapi)
|
||||
val output = this.output.asFile
|
||||
val vanilla = extension.vanilla.get().asFile
|
||||
val rsclient = extension.rsclient.get().asFile
|
||||
val mixins = extension.mixins.get().asFile
|
||||
val rsapi = project.zipTree(extension.rsapi)
|
||||
|
||||
val injector: InjectTaskHandler = Injection(vanilla, rsclient, mixins, rsapi)
|
||||
|
||||
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
|
||||
|
||||
class InjectPlugin: Plugin<Project> {
|
||||
override fun apply(project: Project) {
|
||||
val extension = project.extensions.create("injector", Injextention::class.java, 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") }
|
||||
|
||||
project.tasks.create("inject", Inject::class.java) {
|
||||
it.vanilla.set(extension.vanilla)
|
||||
it.rsclient.set(extension.rsclient)
|
||||
it.mixins.set(extension.mixins)
|
||||
it.rsapi.set(extension.rsapi)
|
||||
if (extension.output.isPresent) {
|
||||
it.output.set(extension.output)
|
||||
}
|
||||
artifacts {
|
||||
it.add("runtimeElements", task.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