diff --git a/runelite-client/runelite-client.gradle.kts b/runelite-client/runelite-client.gradle.kts index ac26a412fe..baf582c674 100644 --- a/runelite-client/runelite-client.gradle.kts +++ b/runelite-client/runelite-client.gradle.kts @@ -143,7 +143,7 @@ tasks { } processResources { - dependsOn(":runelite-script-assembler-plugin:indexMojo") + dependsOn(":runelite-script-assembler-plugin:assembleMojo") from("${buildDir}/scripts") } diff --git a/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts b/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts index 02c32ed9eb..9049853836 100644 --- a/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts +++ b/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts @@ -1,5 +1,6 @@ /* * Copyright (c) 2019 Owain van Brakel + * Copyright (c) 2020 Lucas * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,6 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.io.DataOutputStream as DOS description = "Script Assembler Plugin" @@ -39,34 +41,28 @@ dependencies { tasks { register("assembleMojo") { - inputs.files( - fileTree("${project.extra["rootPath"]}/runelite-client/src/main/scripts") - ) - - outputs.dir("${project.extra["rootPath"]}/runelite-client/build/scripts/runelite"); + outputs.cacheIf { true } + val inp = "${project.extra["rootPath"]}/runelite-client/src/main/scripts" + val out = "${project.extra["rootPath"]}/runelite-client/build/scripts/runelite" + inputs.dir(inp) + outputs.dir(out) classpath = project.sourceSets.main.get().runtimeClasspath main = "net.runelite.script.AssembleMojo" - args(listOf( - "${project.extra["rootPath"]}/runelite-client/src/main/scripts", - "${project.extra["rootPath"]}/runelite-client/build/scripts/runelite" - )) - } + args(listOf(inp, out)) - register("indexMojo") { - inputs.files( - fileTree("${project.extra["rootPath"]}/runelite-client/build/scripts/runelite") - ) - - outputs.file("${project.extra["rootPath"]}/runelite-client/build/scripts/runelite/index"); - - dependsOn("assembleMojo") - - classpath = project.sourceSets.main.get().runtimeClasspath - main = "net.runelite.script.IndexMojo" - args(listOf( - "${project.extra["rootPath"]}/runelite-client/build/scripts/runelite", - "${project.extra["rootPath"]}/runelite-client/build/scripts/runelite/index" - )) + doLast { + DOS(project.file("$out/index").outputStream().buffered(256)).use { + project.fileTree(out) { + exclude { it.path.endsWith(".hash") || it.name.equals("index") } + var lastDir = Int.MAX_VALUE + visit { + if (this.isDirectory) lastDir = this.name.toInt().shl(16) + else it.writeInt(lastDir.or(this.name.toInt())) + } + } + it.writeInt(-1) + } + } } } \ No newline at end of file diff --git a/runelite-script-assembler-plugin/src/main/java/net/runelite/script/IndexMojo.java b/runelite-script-assembler-plugin/src/main/java/net/runelite/script/IndexMojo.java deleted file mode 100644 index c634171532..0000000000 --- a/runelite-script-assembler-plugin/src/main/java/net/runelite/script/IndexMojo.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.script; - -import java.io.DataOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import static java.lang.Integer.parseInt; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugins.annotations.LifecyclePhase; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; - -@Mojo( - name = "build-index", - defaultPhase = LifecyclePhase.GENERATE_RESOURCES -) -public class IndexMojo extends AbstractMojo -{ - @Parameter(required = true) - private File archiveOverlayDirectory; - - @Parameter(required = true) - private File indexFile; - - private IndexMojo(File archiveOverlayDirectory, File indexFile) - { - this.archiveOverlayDirectory = archiveOverlayDirectory; - this.indexFile = indexFile; - } - - public static void main(String[] args) throws Exception - { - if (args.length < 2) - { - throw new IllegalArgumentException("Usage: overlaydir indexfile"); - } - - File archiveOverlayDirectory = new File(args[0]); - File indexFile = new File(args[1]); - - new IndexMojo(archiveOverlayDirectory, indexFile).execute(); - } - - @Override - public void execute() throws MojoExecutionException, MojoFailureException - { - try (DataOutputStream fout = new DataOutputStream(new FileOutputStream(indexFile))) - { - for (File indexFolder : archiveOverlayDirectory.listFiles()) - { - if (indexFolder.isDirectory()) - { - int indexId = parseInt(indexFolder.getName()); - for (File archiveFile : indexFolder.listFiles()) - { - int archiveId; - try - { - archiveId = parseInt(archiveFile.getName()); - } - catch (NumberFormatException ex) - { - continue; - } - - fout.writeInt(indexId << 16 | archiveId); - } - } - } - - fout.writeInt(-1); - } - catch (IOException ex) - { - throw new MojoExecutionException("error building index file", ex); - } - } - -}