diff options
author | shedaniel <daniel@shedaniel.me> | 2021-10-26 20:08:17 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-26 13:08:17 +0100 |
commit | 5c190cc3ef99507bbb38525c0f6a24480a7ec65c (patch) | |
tree | 0fdfbd23d1f6e5d00e002cc25e5bb26fdad4e11e /src/main/java/net/fabricmc/loom/configuration/mods | |
parent | b7142ae468bf5b03a43ca366b5ffdccebd1f9330 (diff) | |
download | architectury-loom-5c190cc3ef99507bbb38525c0f6a24480a7ec65c.tar.gz architectury-loom-5c190cc3ef99507bbb38525c0f6a24480a7ec65c.tar.bz2 architectury-loom-5c190cc3ef99507bbb38525c0f6a24480a7ec65c.zip |
Use NIO instead of ZipUtil (#513)
* Use nio for zip utils
* Make tests work
* Please work
* Fix some issues with tests
* Fix more issues with tests
* NIOZipUtils -> ZipUtils
* Resolve Juuxel's reviews
* Use our own FS utils
* Improve error handling, add loom Pair
* Add Unit tests + fixes
Co-authored-by: modmuss50 <modmuss50@gmail.com>
Diffstat (limited to 'src/main/java/net/fabricmc/loom/configuration/mods')
-rw-r--r-- | src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java index 76401604..4a1bc75a 100644 --- a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java @@ -27,6 +27,7 @@ package net.fabricmc.loom.configuration.mods; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.UncheckedIOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; @@ -41,9 +42,6 @@ import java.util.zip.ZipEntry; import com.google.gson.JsonObject; import org.gradle.api.Project; import org.objectweb.asm.commons.Remapper; -import org.zeroturnaround.zip.ZipUtil; -import org.zeroturnaround.zip.transform.StringZipEntryTransformer; -import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry; import net.fabricmc.accesswidener.AccessWidenerReader; import net.fabricmc.accesswidener.AccessWidenerRemapper; @@ -57,6 +55,7 @@ import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl; import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.TinyRemapperHelper; +import net.fabricmc.loom.util.ZipUtils; import net.fabricmc.tinyremapper.InputTag; import net.fabricmc.tinyremapper.NonClassCopyMode; import net.fabricmc.tinyremapper.OutputConsumerPath; @@ -95,14 +94,14 @@ public class ModProcessor { private static void stripNestedJars(File file) { // Strip out all contained jar info as we dont want loader to try and load the jars contained in dev. - ZipUtil.transformEntries(file, new ZipEntryTransformerEntry[]{(new ZipEntryTransformerEntry("fabric.mod.json", new StringZipEntryTransformer() { - @Override - protected String transform(ZipEntry zipEntry, String input) { - JsonObject json = LoomGradlePlugin.GSON.fromJson(input, JsonObject.class); + try { + ZipUtils.transformJson(JsonObject.class, file.toPath(), Map.of("fabric.mod.json", json -> { json.remove("jars"); - return LoomGradlePlugin.GSON.toJson(json); - } - }))}); + return json; + })); + } catch (IOException e) { + throw new UncheckedIOException("Failed to strip nested jars from %s".formatted(file), e); + } } /** @@ -180,7 +179,7 @@ public class ModProcessor { String accessWidener = info.getAccessWidener(); if (accessWidener != null) { - accessWidenerMap.put(info, remapAccessWidener(ZipUtil.unpackEntry(info.inputFile, accessWidener), remapper.getRemapper())); + accessWidenerMap.put(info, remapAccessWidener(ZipUtils.unpack(info.inputFile.toPath(), accessWidener), remapper.getRemapper())); } remapper.apply(outputConsumer, tagMap.get(info)); @@ -199,7 +198,7 @@ public class ModProcessor { byte[] accessWidener = accessWidenerMap.get(info); if (accessWidener != null) { - ZipUtil.replaceEntry(info.getRemappedOutput(), info.getAccessWidener(), accessWidener); + ZipUtils.replace(info.getRemappedOutput().toPath(), info.getAccessWidener(), accessWidener); } info.finaliseRemapping(); |