diff options
author | Endi S. Dewata <edewata@redhat.com> | 2017-06-07 02:30:49 +0200 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2017-06-07 23:13:09 +0200 |
commit | 78f61f5baa5301f8fee03210a19514b36100e266 (patch) | |
tree | d1b0b1a4709710f0ce083bd711fc86170280a75d /base/console/src | |
parent | d5c331a42955365b76a1549aec047e613d3185dc (diff) | |
download | pki-78f61f5baa5301f8fee03210a19514b36100e266.tar.gz pki-78f61f5baa5301f8fee03210a19514b36100e266.tar.xz pki-78f61f5baa5301f8fee03210a19514b36100e266.zip |
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
Diffstat (limited to 'base/console/src')
-rw-r--r-- | base/console/src/CMakeLists.txt | 8 | ||||
-rw-r--r-- | base/console/src/com/netscape/admin/certsrv/Console.java | 78 |
2 files changed, 62 insertions, 24 deletions
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 <URL> [OPTIONS..]"); + System.out.println(); + System.out.println(" -f <file> Capture stderr and stdout to file."); + System.out.println(" -D <options> Debug options."); + System.out.println(" -x <options> 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 <URL> [OPTIONS..]"); - System.err.println(" -f <file> capture stderr and stdout to <file> (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(); |