Writes a lot of the code necessary for the parse function to work, though it's still not finished
All checks were successful
KnarCraft/FFmpegConvert/pipeline/head This commit looks good
All checks were successful
KnarCraft/FFmpegConvert/pipeline/head This commit looks good
This commit is contained in:
parent
87f2591d3b
commit
4674f1276c
@ -4,6 +4,7 @@ import net.knarcraft.ffmpegconverter.parser.ConverterArgument;
|
||||
import net.knarcraft.ffmpegconverter.parser.ConverterArgumentValue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -22,29 +23,58 @@ public final class Parser {
|
||||
private static void parse(List<String> tokens) {
|
||||
String[] types = {"animeconverter", "audioconverter", "videoconverter"};
|
||||
ConverterArgument[] commonArgs = {
|
||||
new ConverterArgument("-recursions", true, ConverterArgumentValue.INT)
|
||||
new ConverterArgument("recursions", 'r', true, ConverterArgumentValue.INT),
|
||||
new ConverterArgument("infile", 'i', true, ConverterArgumentValue.STRING)
|
||||
};
|
||||
ConverterArgument[] animeArgs = {
|
||||
|
||||
new ConverterArgument("audiolang", 'a', true, ConverterArgumentValue.COMMA_SEPARATED_LIST),
|
||||
new ConverterArgument("subtitlelang", 's', true, ConverterArgumentValue.COMMA_SEPARATED_LIST),
|
||||
new ConverterArgument("tostereo", 't', false, ConverterArgumentValue.BOOLEAN),
|
||||
new ConverterArgument("preventpartialsubtitles", 'p', false, ConverterArgumentValue.BOOLEAN)
|
||||
};
|
||||
ConverterArgument[] audioArgs = {
|
||||
new ConverterArgument("-outext", true,
|
||||
ConverterArgumentValue.SINGLE_VALUE)
|
||||
ConverterArgument[] audioVideoArgs = {
|
||||
new ConverterArgument("-outext", 'o', true,
|
||||
ConverterArgumentValue.STRING)
|
||||
};
|
||||
ConverterArgument[] videoArgs = {
|
||||
new ConverterArgument("-outext", true,
|
||||
ConverterArgumentValue.SINGLE_VALUE)
|
||||
};
|
||||
String type = tokens.get(0).toLowerCase();
|
||||
String type = tokens.remove(0).toLowerCase();
|
||||
if (!ListUtil.listContains(types, s -> s.equals(type))) {
|
||||
throw new IllegalArgumentException("Unknown converter type chosen.");
|
||||
}
|
||||
if (tokens.size() < 2) {
|
||||
throw new IllegalArgumentException("No file/folder path in argument.");
|
||||
}
|
||||
for (int i = 1; i < tokens.size() - 1; i++) {
|
||||
//TODO: Find the type of argument and check the value
|
||||
//TODO: Find an executable way to represent the chain of commands parsed
|
||||
List<ConverterArgument> converterArguments;
|
||||
switch (type) {
|
||||
case "animeconverter":
|
||||
converterArguments = new ArrayList<>(Arrays.asList(ListUtil.concatenate(commonArgs, animeArgs)));
|
||||
break;
|
||||
case "audioconverter":
|
||||
case "videoconverter":
|
||||
converterArguments = new ArrayList<>(Arrays.asList(ListUtil.concatenate(commonArgs, audioVideoArgs)));
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown converter type chosen.");
|
||||
}
|
||||
while (!tokens.isEmpty()) {
|
||||
String currentToken = tokens.remove(0);
|
||||
List<ConverterArgument> foundArguments;
|
||||
if (currentToken.startsWith("--")) {
|
||||
String argumentName = currentToken.substring(2);
|
||||
foundArguments = ListUtil.getMatching(converterArguments, (item) -> item.getName().equals(argumentName));
|
||||
} else if (currentToken.startsWith("-")) {
|
||||
String argumentShorthand = currentToken.substring(1);
|
||||
foundArguments = ListUtil.getMatching(converterArguments, (item) -> item.getName().equals(argumentShorthand));
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unexpected value when not given an argument.");
|
||||
}
|
||||
if (foundArguments.isEmpty()) {
|
||||
throw new IllegalArgumentException(String.format("Invalid argument %s encountered.", currentToken));
|
||||
}
|
||||
ConverterArgument foundArgument = foundArguments.get(0);
|
||||
String argumentValue = tokens.get(0);
|
||||
//TODO: Check if the value is an argument, and if not consume the value
|
||||
//TODO: If the value is an argument, but a value is necessary, throw an error
|
||||
//TODO: Store the found parameter values into a hashmap and send it to the converter as input
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user