From cb8823eb0b446d5c1b9b580e5578866e691771d8 Mon Sep 17 00:00:00 2001 From: liach Date: Wed, 15 May 2019 22:03:13 -0700 Subject: Feature/weave (#138) * Add weave/stitch style command system to enigma Also fixed divide by zero stupidity Signed-off-by: liach * Add tests for package access index and command Signed-off-by: liach * Minor tweaks Signed-off-by: liach --- .../enigma/command/ConvertMappingsCommand.java | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java (limited to 'src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java') diff --git a/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java b/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java new file mode 100644 index 0000000..75d3791 --- /dev/null +++ b/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java @@ -0,0 +1,47 @@ +package cuchaz.enigma.command; + +import cuchaz.enigma.translation.mapping.EntryMapping; +import cuchaz.enigma.translation.mapping.serde.MappingFormat; +import cuchaz.enigma.translation.mapping.tree.EntryTree; + +import java.io.File; +import java.nio.file.Path; +import java.util.Locale; + +public class ConvertMappingsCommand extends Command { + + public ConvertMappingsCommand() { + super("convertmappings"); + } + + @Override + public String getUsage() { + return " "; + } + + @Override + public boolean isValidArgument(int length) { + return length == 3; + } + + @Override + public void run(String... args) throws Exception { + Path fileMappings = getReadablePath(getArg(args, 0, "enigma mappings", true)); + File result = getWritableFile(getArg(args, 1, "converted mappings", true)); + String name = getArg(args, 2, "format desc", true); + MappingFormat saveFormat; + try { + saveFormat = MappingFormat.valueOf(name.toUpperCase(Locale.ROOT)); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException(name + "is not a valid mapping format!"); + } + + System.out.println("Reading mappings..."); + + MappingFormat readFormat = chooseEnigmaFormat(fileMappings); + EntryTree mappings = readFormat.read(fileMappings, new ConsoleProgressListener()); + System.out.println("Saving new mappings..."); + + saveFormat.write(mappings, result.toPath(), new ConsoleProgressListener()); + } +} -- cgit v1.2.3