diff --git a/src/main/kotlin/com/openosrs/injector/Inject.kt b/src/main/kotlin/com/openosrs/injector/Inject.kt index be59bdf..e04f1e0 100644 --- a/src/main/kotlin/com/openosrs/injector/Inject.kt +++ b/src/main/kotlin/com/openosrs/injector/Inject.kt @@ -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) } } \ No newline at end of file diff --git a/src/main/kotlin/com/openosrs/injector/InjectExtension.kt b/src/main/kotlin/com/openosrs/injector/InjectExtension.kt new file mode 100644 index 0000000..91d462e --- /dev/null +++ b/src/main/kotlin/com/openosrs/injector/InjectExtension.kt @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2019, Lucas + * 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 +} + diff --git a/src/main/kotlin/com/openosrs/injector/InjectPlugin.kt b/src/main/kotlin/com/openosrs/injector/InjectPlugin.kt index 33ec784..9aeaef5 100644 --- a/src/main/kotlin/com/openosrs/injector/InjectPlugin.kt +++ b/src/main/kotlin/com/openosrs/injector/InjectPlugin.kt @@ -11,17 +11,18 @@ import org.gradle.api.Plugin import org.gradle.api.Project class InjectPlugin: Plugin { - 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) + }} } \ No newline at end of file diff --git a/src/main/kotlin/com/openosrs/injector/Injextention.kt b/src/main/kotlin/com/openosrs/injector/Injextention.kt deleted file mode 100644 index c324b38..0000000 --- a/src/main/kotlin/com/openosrs/injector/Injextention.kt +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2019, Lucas - * 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() -} -