From a4346a90701f3041d264edd428de000e3c8ff95a Mon Sep 17 00:00:00 2001 From: Runemoro Date: Tue, 25 Jun 2019 08:37:35 -0400 Subject: Add compose, convert, and invert commands (#152) * Add compose and invert commands and add support for conversion to tiny mappings * Improvements suggested by liach * Use Translator to get right entries --- .../enigma/command/ConvertMappingsCommand.java | 64 +++++++++------------- 1 file changed, 26 insertions(+), 38 deletions(-) (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 index 75d3791..775bd3e 100644 --- a/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java +++ b/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java @@ -1,47 +1,35 @@ package cuchaz.enigma.command; +import cuchaz.enigma.throwables.MappingParseException; import cuchaz.enigma.translation.mapping.EntryMapping; -import cuchaz.enigma.translation.mapping.serde.MappingFormat; import cuchaz.enigma.translation.mapping.tree.EntryTree; +import cuchaz.enigma.utils.Utils; -import java.io.File; +import java.io.IOException; import java.nio.file.Path; -import java.util.Locale; +import java.nio.file.Paths; 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()); - } + public ConvertMappingsCommand() { + super("convert-mappings"); + } + + @Override + public String getUsage() { + return " "; + } + + @Override + public boolean isValidArgument(int length) { + return length == 4; + } + + @Override + public void run(String... args) throws IOException, MappingParseException { + EntryTree mappings = MappingCommandsUtil.read(args[0], Paths.get(args[1])); + + Path output = Paths.get(args[3]); + Utils.delete(output); + MappingCommandsUtil.write(mappings, args[2], output); + } } -- cgit v1.2.3