summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2017-06-07 02:30:49 +0200
committerEndi S. Dewata <edewata@redhat.com>2017-06-07 23:13:09 +0200
commit78f61f5baa5301f8fee03210a19514b36100e266 (patch)
treed1b0b1a4709710f0ce083bd711fc86170280a75d /base
parentd5c331a42955365b76a1549aec047e613d3185dc (diff)
downloadpki-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')
-rw-r--r--base/console/src/CMakeLists.txt8
-rw-r--r--base/console/src/com/netscape/admin/certsrv/Console.java78
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();