package pl.touk.sputnik.configuration;
import lombok.Getter;
import org.apache.commons.cli.*;
import org.jetbrains.annotations.NotNull;
public class CliWrapper {
@Getter
private final Options options;
public CliWrapper() {
options = createOptions();
}
@NotNull
@SuppressWarnings("unchecked")
private Options createOptions() {
Options localOptions = new Options();
localOptions.addOption(buildOption(CliOption.CONF, true, true));
localOptions.addOption(buildOption(CliOption.CHANGE_ID, true, false));
localOptions.addOption(buildOption(CliOption.REVISION_ID, true, false));
localOptions.addOption(buildOption(CliOption.PULL_REQUEST_ID, true, false));
localOptions.addOption(buildOption(CliOption.API_KEY, true, false));
localOptions.addOption(buildOption(CliOption.BUILD_ID, true, false));
localOptions.addOption(buildOption(CliOption.PROVIDER, true, false));
localOptions.addOption(buildOption(CliOption.FILE_REGEX, true, false));
localOptions.addOption(buildOption(CliOption.USERNAME, true, false));
localOptions.addOption(buildOption(CliOption.PASSWORD, true, false));
return localOptions;
}
@NotNull
public CommandLine parse(@NotNull String[] args) throws ParseException {
CommandLineParser parser = new DefaultParser();
return parser.parse(options, args);
}
@NotNull
@SuppressWarnings("all")
private Option buildOption(@NotNull CliOption name, boolean hasArgs, boolean isRequired) {
return OptionBuilder.withArgName(name.getCommandLineParam())
.withLongOpt(name.getCommandLineParam())
.hasArg(hasArgs)
.isRequired(isRequired)
.withDescription(name.getDescription())
.create();
}
}