summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java')
-rw-r--r--src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java64
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 @@
1package cuchaz.enigma.command; 1package cuchaz.enigma.command;
2 2
3import cuchaz.enigma.throwables.MappingParseException;
3import cuchaz.enigma.translation.mapping.EntryMapping; 4import cuchaz.enigma.translation.mapping.EntryMapping;
4import cuchaz.enigma.translation.mapping.serde.MappingFormat;
5import cuchaz.enigma.translation.mapping.tree.EntryTree; 5import cuchaz.enigma.translation.mapping.tree.EntryTree;
6import cuchaz.enigma.utils.Utils;
6 7
7import java.io.File; 8import java.io.IOException;
8import java.nio.file.Path; 9import java.nio.file.Path;
9import java.util.Locale; 10import java.nio.file.Paths;
10 11
11public class ConvertMappingsCommand extends Command { 12public 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}