From 75c6da42ca360084b57f7a384cd4a7bf93bdea0a Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Mon, 9 Oct 2023 14:22:40 +0200 Subject: Use System Property for Mapping-IO --- .../enigma/command/CheckMappingsCommand.java | 6 +--- .../main/java/cuchaz/enigma/command/Command.java | 26 +++++++++++----- .../cuchaz/enigma/command/MappingCommandsUtil.java | 35 +++++++++++++++------- 3 files changed, 43 insertions(+), 24 deletions(-) (limited to 'enigma-cli/src') diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java index 922d6688..5e64b2c1 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java @@ -10,7 +10,6 @@ import cuchaz.enigma.ProgressListener; import cuchaz.enigma.analysis.index.JarIndex; import cuchaz.enigma.classprovider.ClasspathClassProvider; import cuchaz.enigma.translation.mapping.EntryMapping; -import cuchaz.enigma.translation.mapping.serde.MappingFormat; import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; import cuchaz.enigma.translation.mapping.tree.EntryTree; import cuchaz.enigma.translation.representation.entry.ClassEntry; @@ -38,15 +37,12 @@ public class CheckMappingsCommand extends Command { Enigma enigma = Enigma.create(); System.out.println("Reading JAR..."); - EnigmaProject project = enigma.openJar(fileJarIn, new ClasspathClassProvider(), ProgressListener.none()); System.out.println("Reading mappings..."); - - MappingFormat format = chooseEnigmaFormat(fileMappings); MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters(); - EntryTree mappings = format.read(fileMappings, ProgressListener.none(), saveParameters); + EntryTree mappings = readMappings(fileMappings, ProgressListener.none(), saveParameters); project.setMappings(mappings); JarIndex idx = project.getJarIndex(); diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java index 04d49f2f..ef7cfaa5 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java @@ -1,11 +1,15 @@ package cuchaz.enigma.command; import java.io.File; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import com.google.common.io.MoreFiles; +import net.fabricmc.mappingio.MappingReader; +import net.fabricmc.mappingio.tree.MemoryMappingTree; +import net.fabricmc.mappingio.tree.VisitableMappingTree; import cuchaz.enigma.Enigma; import cuchaz.enigma.EnigmaProject; @@ -13,6 +17,8 @@ import cuchaz.enigma.ProgressListener; import cuchaz.enigma.classprovider.ClasspathClassProvider; import cuchaz.enigma.translation.mapping.EntryMapping; import cuchaz.enigma.translation.mapping.serde.MappingFormat; +import cuchaz.enigma.translation.mapping.serde.MappingIoConverter; +import cuchaz.enigma.translation.mapping.serde.MappingParseException; import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; import cuchaz.enigma.translation.mapping.tree.EntryTree; @@ -41,7 +47,7 @@ public abstract class Command { System.out.println("Reading mappings..."); MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters(); - EntryTree mappings = chooseEnigmaFormat(fileMappings).read(fileMappings, progress, saveParameters); + EntryTree mappings = readMappings(fileMappings, progress, saveParameters); project.setMappings(mappings); } @@ -49,14 +55,18 @@ public abstract class Command { return project; } - protected static MappingFormat chooseEnigmaFormat(Path path) { - if (Files.isDirectory(path)) { - return MappingFormat.ENIGMA_DIRECTORY; - } else if ("zip".equalsIgnoreCase(MoreFiles.getFileExtension(path))) { - return MappingFormat.ENIGMA_ZIP; - } else { - return MappingFormat.ENIGMA_FILE; + protected static EntryTree readMappings(Path path, ProgressListener progress, MappingSaveParameters saveParameters) throws IOException, MappingParseException { + // Legacy + if ("zip".equalsIgnoreCase(MoreFiles.getFileExtension(path))) { + return MappingFormat.ENIGMA_ZIP.read(path, progress, saveParameters); } + + net.fabricmc.mappingio.format.MappingFormat format = MappingReader.detectFormat(path); + if (format == null) throw new IllegalArgumentException("Unknown mapping format!"); + + VisitableMappingTree tree = new MemoryMappingTree(); + MappingReader.read(path, format, tree); + return MappingIoConverter.fromMappingIo(tree, progress); } protected static File getWritableFile(String path) { diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java index 787625b6..c452d8ca 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java @@ -4,14 +4,15 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import net.fabricmc.mappingio.MappingWriter; +import net.fabricmc.mappingio.tree.VisitableMappingTree; + import cuchaz.enigma.ProgressListener; import cuchaz.enigma.translation.mapping.EntryMapping; import cuchaz.enigma.translation.mapping.serde.MappingFormat; +import cuchaz.enigma.translation.mapping.serde.MappingIoConverter; import cuchaz.enigma.translation.mapping.serde.MappingParseException; import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; -import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsReader; -import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsWriter; -import cuchaz.enigma.translation.mapping.serde.tiny.TinyMappingsReader; import cuchaz.enigma.translation.mapping.serde.tiny.TinyMappingsWriter; import cuchaz.enigma.translation.mapping.serde.tinyv2.TinyV2Writer; import cuchaz.enigma.translation.mapping.tree.EntryTree; @@ -22,11 +23,11 @@ public final class MappingCommandsUtil { public static EntryTree read(String type, Path path, MappingSaveParameters saveParameters) throws MappingParseException, IOException { if (type.equals("enigma")) { - return (Files.isDirectory(path) ? EnigmaMappingsReader.DIRECTORY : EnigmaMappingsReader.ZIP).read(path, ProgressListener.none(), saveParameters); + return (Files.isDirectory(path) ? MappingFormat.ENIGMA_DIRECTORY : MappingFormat.ENIGMA_ZIP).read(path, ProgressListener.none(), saveParameters); } if (type.equals("tiny")) { - return TinyMappingsReader.INSTANCE.read(path, ProgressListener.none(), saveParameters); + return MappingFormat.TINY_FILE.read(path, ProgressListener.none(), saveParameters); } MappingFormat format = null; @@ -40,15 +41,15 @@ public final class MappingCommandsUtil { } if (format != null) { - return format.getReader().read(path, ProgressListener.none(), saveParameters); + return format.read(path, ProgressListener.none(), saveParameters); } throw new IllegalArgumentException("no reader for " + type); } - public static void write(EntryTree mappings, String type, Path path, MappingSaveParameters saveParameters) { + public static void write(EntryTree mappings, String type, Path path, MappingSaveParameters saveParameters) throws IOException { if (type.equals("enigma")) { - EnigmaMappingsWriter.DIRECTORY.write(mappings, path, ProgressListener.none(), saveParameters); + MappingFormat.ENIGMA_DIRECTORY.write(mappings, path, ProgressListener.none(), saveParameters); return; } @@ -59,7 +60,13 @@ public final class MappingCommandsUtil { throw new IllegalArgumentException("specify column names as 'tinyv2:from_namespace:to_namespace'"); } - new TinyV2Writer(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); + if (!System.getProperty("enigma.use_mappingio", "true").equals("true")) { + new TinyV2Writer(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); + return; + } + + VisitableMappingTree tree = MappingIoConverter.toMappingIo(mappings, ProgressListener.none(), split[1], split[2]); + tree.accept(MappingWriter.create(path, net.fabricmc.mappingio.format.MappingFormat.TINY_2_FILE)); return; } @@ -70,7 +77,13 @@ public final class MappingCommandsUtil { throw new IllegalArgumentException("specify column names as 'tiny:from_column:to_column'"); } - new TinyMappingsWriter(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); + if (!System.getProperty("enigma.use_mappingio", "true").equals("true")) { + new TinyMappingsWriter(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); + return; + } + + VisitableMappingTree tree = MappingIoConverter.toMappingIo(mappings, ProgressListener.none(), split[1], split[2]); + tree.accept(MappingWriter.create(path, net.fabricmc.mappingio.format.MappingFormat.TINY_FILE)); return; } @@ -83,7 +96,7 @@ public final class MappingCommandsUtil { } if (format != null) { - format.getWriter().write(mappings, path, ProgressListener.none(), saveParameters); + format.write(mappings, path, ProgressListener.none(), saveParameters); return; } -- cgit v1.2.3 From 423f5cf98c6d419942301cca0c7c8169db8d4b30 Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Thu, 16 Nov 2023 13:51:03 +0100 Subject: Fix importing mappings without field source descriptors --- enigma-cli/src/main/java/cuchaz/enigma/command/Command.java | 4 ++-- .../src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'enigma-cli/src') diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java index ef7cfaa5..de06fa6e 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java @@ -58,7 +58,7 @@ public abstract class Command { protected static EntryTree readMappings(Path path, ProgressListener progress, MappingSaveParameters saveParameters) throws IOException, MappingParseException { // Legacy if ("zip".equalsIgnoreCase(MoreFiles.getFileExtension(path))) { - return MappingFormat.ENIGMA_ZIP.read(path, progress, saveParameters); + return MappingFormat.ENIGMA_ZIP.read(path, progress, saveParameters, null); } net.fabricmc.mappingio.format.MappingFormat format = MappingReader.detectFormat(path); @@ -66,7 +66,7 @@ public abstract class Command { VisitableMappingTree tree = new MemoryMappingTree(); MappingReader.read(path, format, tree); - return MappingIoConverter.fromMappingIo(tree, progress); + return MappingIoConverter.fromMappingIo(tree, progress, null); } protected static File getWritableFile(String path) { diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java index c452d8ca..2c6c9fdb 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java @@ -23,11 +23,11 @@ public final class MappingCommandsUtil { public static EntryTree read(String type, Path path, MappingSaveParameters saveParameters) throws MappingParseException, IOException { if (type.equals("enigma")) { - return (Files.isDirectory(path) ? MappingFormat.ENIGMA_DIRECTORY : MappingFormat.ENIGMA_ZIP).read(path, ProgressListener.none(), saveParameters); + return (Files.isDirectory(path) ? MappingFormat.ENIGMA_DIRECTORY : MappingFormat.ENIGMA_ZIP).read(path, ProgressListener.none(), saveParameters, null); } if (type.equals("tiny")) { - return MappingFormat.TINY_FILE.read(path, ProgressListener.none(), saveParameters); + return MappingFormat.TINY_FILE.read(path, ProgressListener.none(), saveParameters, null); } MappingFormat format = null; @@ -41,7 +41,7 @@ public final class MappingCommandsUtil { } if (format != null) { - return format.read(path, ProgressListener.none(), saveParameters); + return format.read(path, ProgressListener.none(), saveParameters, null); } throw new IllegalArgumentException("no reader for " + type); -- cgit v1.2.3 From b327ba0b31c2229bb49240e456cd7cb604b8e2fa Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Thu, 16 Nov 2023 14:48:13 +0100 Subject: Keep API compatibility --- .../cuchaz/enigma/command/MappingCommandsUtil.java | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'enigma-cli/src') diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java index 2c6c9fdb..3a00aecb 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java @@ -1,6 +1,7 @@ package cuchaz.enigma.command; import java.io.IOException; +import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; @@ -47,7 +48,7 @@ public final class MappingCommandsUtil { throw new IllegalArgumentException("no reader for " + type); } - public static void write(EntryTree mappings, String type, Path path, MappingSaveParameters saveParameters) throws IOException { + public static void write(EntryTree mappings, String type, Path path, MappingSaveParameters saveParameters) { if (type.equals("enigma")) { MappingFormat.ENIGMA_DIRECTORY.write(mappings, path, ProgressListener.none(), saveParameters); return; @@ -64,9 +65,14 @@ public final class MappingCommandsUtil { new TinyV2Writer(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); return; } + + try { + VisitableMappingTree tree = MappingIoConverter.toMappingIo(mappings, ProgressListener.none(), split[1], split[2]); + tree.accept(MappingWriter.create(path, net.fabricmc.mappingio.format.MappingFormat.TINY_2_FILE)); + } catch (IOException e) { + throw new UncheckedIOException(e); + } - VisitableMappingTree tree = MappingIoConverter.toMappingIo(mappings, ProgressListener.none(), split[1], split[2]); - tree.accept(MappingWriter.create(path, net.fabricmc.mappingio.format.MappingFormat.TINY_2_FILE)); return; } @@ -82,8 +88,13 @@ public final class MappingCommandsUtil { return; } - VisitableMappingTree tree = MappingIoConverter.toMappingIo(mappings, ProgressListener.none(), split[1], split[2]); - tree.accept(MappingWriter.create(path, net.fabricmc.mappingio.format.MappingFormat.TINY_FILE)); + try { + VisitableMappingTree tree = MappingIoConverter.toMappingIo(mappings, ProgressListener.none(), split[1], split[2]); + tree.accept(MappingWriter.create(path, net.fabricmc.mappingio.format.MappingFormat.TINY_FILE)); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + return; } -- cgit v1.2.3 From 1d89bed16bd708bdc5ad8921b7a6f0b7a5e7de83 Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Thu, 16 Nov 2023 14:57:32 +0100 Subject: Fix checkstyle --- enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'enigma-cli/src') diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java index 3a00aecb..e1e216a5 100644 --- a/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java @@ -65,7 +65,7 @@ public final class MappingCommandsUtil { new TinyV2Writer(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); return; } - + try { VisitableMappingTree tree = MappingIoConverter.toMappingIo(mappings, ProgressListener.none(), split[1], split[2]); tree.accept(MappingWriter.create(path, net.fabricmc.mappingio.format.MappingFormat.TINY_2_FILE)); -- cgit v1.2.3