summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.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/ComposeMappingsCommand.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/ComposeMappingsCommand.java')
-rw-r--r--src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java b/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java
new file mode 100644
index 0000000..1f6a069
--- /dev/null
+++ b/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java
@@ -0,0 +1,37 @@
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 ComposeMappingsCommand extends Command {
13 public ComposeMappingsCommand() {
14 super("compose-mappings");
15 }
16
17 @Override
18 public String getUsage() {
19 return "<left-format> <left> <right-format> <right> <result-format> <result> <keep-mode>";
20 }
21
22 @Override
23 public boolean isValidArgument(int length) {
24 return length == 7;
25 }
26
27 @Override
28 public void run(String... args) throws IOException, MappingParseException {
29 EntryTree<EntryMapping> left = MappingCommandsUtil.read(args[0], Paths.get(args[1]));
30 EntryTree<EntryMapping> right = MappingCommandsUtil.read(args[2], Paths.get(args[3]));
31 EntryTree<EntryMapping> result = MappingCommandsUtil.compose(left, right, args[6].equals("left") || args[6].equals("both"), args[6].equals("right") || args[6].equals("both"));
32
33 Path output = Paths.get(args[5]);
34 Utils.delete(output);
35 MappingCommandsUtil.write(result, args[4], output);
36 }
37}