aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/configuration/mods
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-10-26 20:08:17 +0800
committerGitHub <noreply@github.com>2021-10-26 13:08:17 +0100
commit5c190cc3ef99507bbb38525c0f6a24480a7ec65c (patch)
tree0fdfbd23d1f6e5d00e002cc25e5bb26fdad4e11e /src/main/java/net/fabricmc/loom/configuration/mods
parentb7142ae468bf5b03a43ca366b5ffdccebd1f9330 (diff)
downloadarchitectury-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.java23
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();