summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java
diff options
context:
space:
mode:
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}