feat: handling custom args

This commit is contained in:
zaaarf 2023-08-27 09:44:38 +02:00
parent 2a028258cb
commit bbea72ed47
No known key found for this signature in database
GPG key ID: 6445A5CD15E5B40C
2 changed files with 22 additions and 10 deletions

View file

@ -8,10 +8,7 @@ import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.ServiceLoader;
/** /**
* Writes a mapping to a certain format. * Writes a mapping to a certain format.
@ -31,9 +28,24 @@ public class MappingWriter {
CommandLine cmdLine = parser.parse(options, args); CommandLine cmdLine = parser.parse(options, args);
args = cmdLine.getArgs(); args = cmdLine.getArgs();
if(args.length != 3) { //separate normal args from custom args
int cursor;
for(cursor = 0; cursor < args.length; cursor++)
if(args[cursor].equals("-a"))
break;
String[] customArgs;
if(cursor != args.length) {
int len = args.length - cursor - 1;
customArgs = new String[len];
System.arraycopy(args, cursor + 1, customArgs, 0, len);
String[] newArgs = new String[cursor];
System.arraycopy(args, 0, newArgs, 0, cursor);
args = newArgs;
} else customArgs = new String[0];
if(args.length < 4) {
System.err.println("Bad argument count!"); System.err.println("Bad argument count!");
System.err.println("java -jar mapping-writer.jar [-r] <location> <format> <output>"); System.err.println("java -jar mapping-writer.jar [-r] <location> <format> <output> [-a <custom args]");
return; return;
} }
@ -60,18 +72,18 @@ public class MappingWriter {
File targetFile = new File(args[2]); File targetFile = new File(args[2]);
if(!targetFile.createNewFile()) { if(!targetFile.createNewFile()) {
System.out.println("File already exists!"); System.err.println("File already exists!");
return; return;
} }
if(!targetFile.canWrite()) { if(!targetFile.canWrite()) {
System.out.println("Failed to write to file: access denied."); System.err.println("Failed to write to file: access denied.");
return; return;
} }
//call the writer //call the writer
PrintWriter printWriter = new PrintWriter(new FileWriter(targetFile)); PrintWriter printWriter = new PrintWriter(new FileWriter(targetFile));
writer.write(mapper, printWriter); writer.write(mapper, printWriter, customArgs);
printWriter.close(); printWriter.close();
} }
} }

View file

@ -18,7 +18,7 @@ public class TinyV2Writer implements IWriter {
@Override @Override
public void write(IMapper mapper, PrintWriter writer, String... args) { public void write(IMapper mapper, PrintWriter writer, String... args) {
writer.printf("tiny\t2\t0\t%s\t%s", args[0], args[1]); //TODO namespace naming support writer.printf("tiny\t2\t0\t%s\t%s", args[0], args[1]);
mapper.getRawMappings().forEach((name, data) -> { mapper.getRawMappings().forEach((name, data) -> {
writer.printf("c\t%s\t%s\n", name, data.nameMapped); writer.printf("c\t%s\t%s\n", name, data.nameMapped);
data.getFields().forEach((fieldName, fieldData) -> data.getFields().forEach((fieldName, fieldData) ->