diff options
| author | 2019-06-25 08:37:35 -0400 | |
|---|---|---|
| committer | 2019-06-25 14:37:35 +0200 | |
| commit | a4346a90701f3041d264edd428de000e3c8ff95a (patch) | |
| tree | 13a679d86e7039a334336ad09810796df1ccac68 /src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java | |
| parent | Merge pull request #151 from Runemoro/master (diff) | |
| download | enigma-fork-a4346a90701f3041d264edd428de000e3c8ff95a.tar.gz enigma-fork-a4346a90701f3041d264edd428de000e3c8ff95a.tar.xz enigma-fork-a4346a90701f3041d264edd428de000e3c8ff95a.zip | |
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
Diffstat (limited to 'src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java | 64 |
1 files changed, 26 insertions, 38 deletions
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 @@ | |||
| 1 | package cuchaz.enigma.command; | 1 | package cuchaz.enigma.command; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.throwables.MappingParseException; | ||
| 3 | import cuchaz.enigma.translation.mapping.EntryMapping; | 4 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 4 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; | ||
| 5 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 5 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 6 | import cuchaz.enigma.utils.Utils; | ||
| 6 | 7 | ||
| 7 | import java.io.File; | 8 | import java.io.IOException; |
| 8 | import java.nio.file.Path; | 9 | import java.nio.file.Path; |
| 9 | import java.util.Locale; | 10 | import java.nio.file.Paths; |
| 10 | 11 | ||
| 11 | public class ConvertMappingsCommand extends Command { | 12 | public class ConvertMappingsCommand extends Command { |
| 12 | 13 | public ConvertMappingsCommand() { | |
| 13 | public ConvertMappingsCommand() { | 14 | super("convert-mappings"); |
| 14 | super("convertmappings"); | 15 | } |
| 15 | } | 16 | |
| 16 | 17 | @Override | |
| 17 | @Override | 18 | public String getUsage() { |
| 18 | public String getUsage() { | 19 | return "<source-format> <source> <result-format> <result>"; |
| 19 | return "<enigma mappings> <converted mappings> <ENIGMA_FILE|ENIGMA_DIRECTORY|SRG_FILE>"; | 20 | } |
| 20 | } | 21 | |
| 21 | 22 | @Override | |
| 22 | @Override | 23 | public boolean isValidArgument(int length) { |
| 23 | public boolean isValidArgument(int length) { | 24 | return length == 4; |
| 24 | return length == 3; | 25 | } |
| 25 | } | 26 | |
| 26 | 27 | @Override | |
| 27 | @Override | 28 | public void run(String... args) throws IOException, MappingParseException { |
| 28 | public void run(String... args) throws Exception { | 29 | EntryTree<EntryMapping> mappings = MappingCommandsUtil.read(args[0], Paths.get(args[1])); |
| 29 | Path fileMappings = getReadablePath(getArg(args, 0, "enigma mappings", true)); | 30 | |
| 30 | File result = getWritableFile(getArg(args, 1, "converted mappings", true)); | 31 | Path output = Paths.get(args[3]); |
| 31 | String name = getArg(args, 2, "format desc", true); | 32 | Utils.delete(output); |
| 32 | MappingFormat saveFormat; | 33 | MappingCommandsUtil.write(mappings, args[2], output); |
| 33 | try { | 34 | } |
| 34 | saveFormat = MappingFormat.valueOf(name.toUpperCase(Locale.ROOT)); | ||
| 35 | } catch (IllegalArgumentException e) { | ||
| 36 | throw new IllegalArgumentException(name + "is not a valid mapping format!"); | ||
| 37 | } | ||
| 38 | |||
| 39 | System.out.println("Reading mappings..."); | ||
| 40 | |||
| 41 | MappingFormat readFormat = chooseEnigmaFormat(fileMappings); | ||
| 42 | EntryTree<EntryMapping> mappings = readFormat.read(fileMappings, new ConsoleProgressListener()); | ||
| 43 | System.out.println("Saving new mappings..."); | ||
| 44 | |||
| 45 | saveFormat.write(mappings, result.toPath(), new ConsoleProgressListener()); | ||
| 46 | } | ||
| 47 | } | 35 | } |