From 78f61f5baa5301f8fee03210a19514b36100e266 Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Wed, 7 Jun 2017 02:30:49 +0200 Subject: Updated PKI console option parser. The PKI console option parser has been updated to use the Commons CLI library. https://pagure.io/dogtagpki/issue/2671 Change-Id: I77d185c83fec61e3dd126ccf9579fa2fba1e33a4 --- base/console/src/CMakeLists.txt | 8 +++ .../src/com/netscape/admin/certsrv/Console.java | 78 +++++++++++++++------- 2 files changed, 62 insertions(+), 24 deletions(-) (limited to 'base/console') diff --git a/base/console/src/CMakeLists.txt b/base/console/src/CMakeLists.txt index fbbcdf6b8..50b4a4508 100644 --- a/base/console/src/CMakeLists.txt +++ b/base/console/src/CMakeLists.txt @@ -1,5 +1,12 @@ project(pki-console_java NONE) +find_file(APACHE_COMMONS_CLI_JAR + NAMES + apache-commons-cli.jar + PATHS + /usr/share/java +) + # '/usr/share/java/pki' jars find_file(PKI_NSUTIL_JAR NAMES @@ -97,6 +104,7 @@ javac(pki-console-classes SOURCES *.java CLASSPATH + ${APACHE_COMMONS_CLI_JAR} ${BASE_JAR} ${LDAPJDK_JAR} ${MMC_JAR} ${MMC_EN_JAR} ${NMCLF_JAR} ${NMCLF_EN_JAR} ${PKI_CMSUTIL_JAR} ${PKI_NSUTIL_JAR} ${PKI_CERTSRV_JAR} diff --git a/base/console/src/com/netscape/admin/certsrv/Console.java b/base/console/src/com/netscape/admin/certsrv/Console.java index 3d5b7a8e7..6bb8a3449 100644 --- a/base/console/src/com/netscape/admin/certsrv/Console.java +++ b/base/console/src/com/netscape/admin/certsrv/Console.java @@ -44,6 +44,11 @@ import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.UIManager; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; import org.dogtagpki.common.Info; import org.dogtagpki.common.InfoClient; @@ -53,7 +58,6 @@ import com.netscape.management.client.Framework; import com.netscape.management.client.IPage; import com.netscape.management.client.IResourceObject; import com.netscape.management.client.ResourceObject; -import com.netscape.management.client.cmd.GetOpt; import com.netscape.management.client.comm.CommClient; import com.netscape.management.client.comm.CommRecord; import com.netscape.management.client.comm.HttpChannel; @@ -1564,6 +1568,18 @@ public class Console implements CommClient { } } + public static void printHelp() { + + System.out.println("Usage: pkiconsole [OPTIONS..]"); + System.out.println(); + System.out.println(" -f Capture stderr and stdout to file."); + System.out.println(" -D Debug options."); + System.out.println(" -x Extra options (javalaf, nowinpos, nologo)."); + System.out.println(" -h,--help Show help message."); + System.out.println(); + System.out.println("Example: pkiconsole https://hostname:8443/ca"); + } + /** * main routine. It will pass the command line parameters then call the Console constructor * to create a console instance. @@ -1573,10 +1589,29 @@ public class Console implements CommClient { static public void main(String argv[]) throws Exception { - GetOpt opt = new GetOpt("h:f:D:x:", argv); + Options options = new Options(); + + Option option = new Option("f", true, "Capture stderr and stdout to file."); + option.setArgName("file"); + options.addOption(option); + + option = new Option("D", true, "Debug options."); + option.setArgName("options"); + options.addOption(option); + + option = new Option("x", true, "Extra options (javalaf, nowinpos, nologo)."); + option.setArgName("options"); + options.addOption(option); + + options.addOption("h", "help", false, "Show help message."); + + CommandLineParser parser = new DefaultParser(); + CommandLine cmd = parser.parse(options, argv); + + String[] cmdArgs = cmd.getArgs(); - if (opt.hasOption('f')) { - String outFile = opt.getOptionParam('f'); + String outFile = cmd.getOptionValue("f"); + if (outFile != null) { try { TeeStream.tee(outFile); } @@ -1586,10 +1621,10 @@ public class Console implements CommClient { } } - if (opt.hasOption('D')) { + if (cmd.hasOption("D")) { Debug.setApplicationStartTime(_t0); - String extraParam = opt.getOptionParam('D'); - if (extraParam != null) { + String extraParam = cmd.getOptionValue("D"); + if (!extraParam.isEmpty()) { if (extraParam.equals("?") || !Debug.setTraceMode(extraParam)) { System.out.println(Debug.getUsage()); @@ -1614,18 +1649,21 @@ public class Console implements CommClient { } } + if (cmdArgs.length != 1 || cmd.hasOption("help")) { + printHelp(); + waitForKeyPress(); // allow the user to read the msg on Win NT + return; + } + Debug.println(0, "Management-Console/" + _resource.getString("console","displayVersion") + " B" + VersionInfo.getBuildNumber()); - if (opt.hasOption('x')) { - String extraParam = opt.getOptionParam('x'); + if (cmd.hasOption("x")) { + String extraParam = cmd.getOptionValue("x"); boolean supportedOption = false; - if (extraParam == null) - extraParam = ""; - if (extraParam.indexOf(OPTION_NOLOGO) != -1) { _showSplashScreen = false; supportedOption = true; @@ -1640,21 +1678,13 @@ public class Console implements CommClient { } if (supportedOption == false) { - opt = new GetOpt("h:", new String[]{ "-h"}); + printHelp(); + waitForKeyPress(); // allow the user to read the msg on Win NT + System.exit(0); } } - if (opt.getParameters().size() != 1 || opt.hasOption('h'))// help - { - System.err.println("Usage: pkiconsole [OPTIONS..]"); - System.err.println(" -f capture stderr and stdout to (like Unix tee command)"); - System.err.println(" -x extra options (javalaf,nowinpos,nologo)"); - System.err.println("\nExample: pkiconsole https://hostname:8443/ca"); - waitForKeyPress(); // allow the user to read the msg on Win NT - System.exit(0); - } - - String sAdminURL = (String)opt.getParameters().get(0); + String sAdminURL = cmdArgs[0]; ConsoleInfo cinfo = new ConsoleInfo(); CMSAdmin admin = new CMSAdmin(); -- cgit