aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/common/cli/CLITools.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/cz/crcs/ectester/common/cli/CLITools.java (renamed from src/cz/crcs/ectester/common/CLITools.java)36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/cz/crcs/ectester/common/CLITools.java b/src/cz/crcs/ectester/common/cli/CLITools.java
index 57cea64..8f34f62 100644
--- a/src/cz/crcs/ectester/common/CLITools.java
+++ b/src/cz/crcs/ectester/common/cli/CLITools.java
@@ -1,11 +1,14 @@
-package cz.crcs.ectester.common;
+package cz.crcs.ectester.common.cli;
import cz.crcs.ectester.common.ec.EC_Category;
import cz.crcs.ectester.common.ec.EC_Data;
import cz.crcs.ectester.data.EC_Store;
+import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.Map;
/**
@@ -22,6 +25,37 @@ public class CLITools {
help.printHelp(prog, header, options, footer, usage);
}
+ private static void help(HelpFormatter help, PrintWriter pw, CommandLineParser cli, int depth) {
+ if (cli instanceof TreeParser) {
+ TreeParser tp = (TreeParser) cli;
+ tp.getParsers().forEach((key, value) -> {
+ help.printWrapped(pw, HelpFormatter.DEFAULT_WIDTH, String.format("%" + String.valueOf(depth) + "s" + key + ":", " "));
+ help.printOptions(pw, HelpFormatter.DEFAULT_WIDTH, value.getOptions(), HelpFormatter.DEFAULT_LEFT_PAD + depth, HelpFormatter.DEFAULT_DESC_PAD);
+ pw.println();
+ CLITools.help(help, pw, value.getParser(), depth + 1);
+ });
+ }
+ }
+
+ /**
+ * Print tree help.
+ */
+ public static void help(String prog, String header, Options baseOpts, TreeParser baseParser, String footer, boolean usage) {
+ HelpFormatter help = new HelpFormatter();
+ help.setOptionComparator(null);
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ if (usage) {
+ help.printUsage(pw, HelpFormatter.DEFAULT_WIDTH, prog, baseOpts);
+ }
+ help.printWrapped(pw, HelpFormatter.DEFAULT_WIDTH, header);
+ help.printOptions(pw, HelpFormatter.DEFAULT_WIDTH, baseOpts, HelpFormatter.DEFAULT_LEFT_PAD, HelpFormatter.DEFAULT_DESC_PAD);
+ pw.println();
+ help(help, pw, baseParser, 1);
+ help.printWrapped(pw, HelpFormatter.DEFAULT_WIDTH, footer);
+ System.out.println(sw.toString());
+ }
+
/**
* Print version info.
*/