summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java
diff options
context:
space:
mode:
authorGravatar Runemoro2019-06-25 08:37:35 -0400
committerGravatar Gegy2019-06-25 14:37:35 +0200
commita4346a90701f3041d264edd428de000e3c8ff95a (patch)
tree13a679d86e7039a334336ad09810796df1ccac68 /src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java
parentMerge pull request #151 from Runemoro/master (diff)
downloadenigma-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/InvertMappingsCommand.java')
-rw-r--r--src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java b/src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java
new file mode 100644
index 0000000..bfe8308
--- /dev/null
+++ b/src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java
@@ -0,0 +1,36 @@
1package cuchaz.enigma.command;
2
3import cuchaz.enigma.throwables.MappingParseException;
4import cuchaz.enigma.translation.mapping.EntryMapping;
5import cuchaz.enigma.translation.mapping.tree.EntryTree;
6import cuchaz.enigma.utils.Utils;
7
8import java.io.IOException;
9import java.nio.file.Path;
10import java.nio.file.Paths;
11
12public class InvertMappingsCommand extends Command {
13 public InvertMappingsCommand() {
14 super("invert-mappings");
15 }
16
17 @Override
18 public String getUsage() {
19 return "<source-format> <source> <result-format> <result>";
20 }
21
22 @Override
23 public boolean isValidArgument(int length) {
24 return length == 4;
25 }
26
27 @Override
28 public void run(String... args) throws IOException, MappingParseException {
29 EntryTree<EntryMapping> source = MappingCommandsUtil.read(args[0], Paths.get(args[1]));
30 EntryTree<EntryMapping> result = MappingCommandsUtil.invert(source);
31
32 Path output = Paths.get(args[3]);
33 Utils.delete(output);
34 MappingCommandsUtil.write(result, args[2], output);
35 }
36}