import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.Namespace;
import net.sourceforge.argparse4j.inf.Subparsers;
import net.sourceforge.argparse4j.inf.Subparser;
public class MainApp {
public static void main(String[] args) {
ArgumentParser parser = ArgumentParsers.newFor("app").build();
Subparsers subparsers = parser.addSubparsers().dest("subcommand");
Subparser command1Parser = subparsers.addParser("command1");
command1Parser.addArgument("--option1").setDefault("default1").constMetavar("OPTION1");
command1Parser.addArgument("arg1").type(Integer.class);
Subparser command2Parser = subparsers.addParser("command2");
command2Parser.addArgument("--option2").type(Arguments.fileType().verifyExists().verifyIsFile()).required(true);
command2Parser.addArgument("arg2").nargs("*");
Namespace namespace = null;
try {
namespace = parser.parseArgs(args);
String subcommand = namespace.getString("subcommand");
if (subcommand.equals("command1")) {
executeCommand1(namespace);
} else if (subcommand.equals("command2")) {
executeCommand2(namespace);
}
} catch (Exception e) {
parser.handleError(e);
parser.printHelp();
System.exit(1);
}
}
private static void executeCommand1(Namespace namespace) {
String option1 = namespace.getString("option1");
int arg1 = namespace.getInt("arg1");
System.out.println("Executing command1...");
System.out.println("Option1: " + option1);
System.out.println("Arg1: " + arg1);
}
private static void executeCommand2(Namespace namespace) {
String option2 = namespace.getString("option2");
List<String> arg2 = namespace.getList("arg2");
System.out.println("Executing command2...");
System.out.println("Option2: " + option2);
System.out.println("Arg2: " + arg2);
}
}
<dependencies>
<dependency>
<groupId>net.sourceforge.argparse4j</groupId>
<artifactId>argparse4j</artifactId>
<version>0.9.0</version>
</dependency>
</dependencies>