use managed objects, allow caching, require less config

This commit is contained in:
Lucwousin
2020-06-28 07:27:28 +02:00
parent 4d0057291f
commit 6ffdffa0d9
4 changed files with 51 additions and 53 deletions

View File

@@ -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)
}
}

View 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
}

View File

@@ -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)
}}
}

View File

@@ -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()
}