summaryrefslogtreecommitdiffstats
path: root/base/java-tools/src/com/netscape
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2015-06-30 22:49:11 -0400
committerEndi S. Dewata <edewata@redhat.com>2015-07-02 17:28:58 -0400
commit067cbce6c015a50f4a1747f8894b13c9052c2ed9 (patch)
treedc20de82c992e3ee5d131aaded1b44b09e6afa34 /base/java-tools/src/com/netscape
parentbbd2feaa1f0ca4c338ca490f191184f2bd5c1a41 (diff)
downloadpki-067cbce6c015a50f4a1747f8894b13c9052c2ed9.tar.gz
pki-067cbce6c015a50f4a1747f8894b13c9052c2ed9.tar.xz
pki-067cbce6c015a50f4a1747f8894b13c9052c2ed9.zip
Fixed pki help CLI.
A new findModules() method has been added to the CLI class to find the list of modules handling a command. The list will be used by the pki help CLI to find the proper man page for the specified command.
Diffstat (limited to 'base/java-tools/src/com/netscape')
-rw-r--r--base/java-tools/src/com/netscape/cmstools/cert/CertCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/cli/CLI.java72
-rw-r--r--base/java-tools/src/com/netscape/cmstools/cli/HelpCLI.java27
-rw-r--r--base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/client/ClientCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/group/GroupCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/group/GroupMemberCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/logging/AuditCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/system/SecurityDomainCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/user/UserCLI.java5
-rw-r--r--base/java-tools/src/com/netscape/cmstools/user/UserCertCLI.java5
13 files changed, 148 insertions, 6 deletions
diff --git a/base/java-tools/src/com/netscape/cmstools/cert/CertCLI.java b/base/java-tools/src/com/netscape/cmstools/cert/CertCLI.java
index 9ffa3ad45..e0924d353 100644
--- a/base/java-tools/src/com/netscape/cmstools/cert/CertCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/cert/CertCLI.java
@@ -67,6 +67,11 @@ public class CertCLI extends CLI {
}
}
+ @Override
+ public String getManPage() {
+ return "pki-cert";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();
diff --git a/base/java-tools/src/com/netscape/cmstools/cli/CLI.java b/base/java-tools/src/com/netscape/cmstools/cli/CLI.java
index ed01edc9a..13387495b 100644
--- a/base/java-tools/src/com/netscape/cmstools/cli/CLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/cli/CLI.java
@@ -21,6 +21,7 @@ package com.netscape.cmstools.cli;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import org.apache.commons.cli.CommandLineParser;
@@ -113,6 +114,75 @@ public class CLI {
return modules.remove(name);
}
+ /**
+ * Find the list of modules that handle the specified command.
+ */
+ public List<CLI> findModules(String command) throws Exception {
+
+ List<CLI> results = new ArrayList<CLI>();
+
+ // split command into list of names:
+ // <names[0]>-<names[1]>-<names[2]>-...-<names[n-1]>
+ String[] names = command.split("-");
+
+ CLI current = this;
+ int i = 0;
+
+ // translate all names into modules starting from the beginning
+ while (i < names.length) {
+
+ String moduleName = null;
+ CLI module = null;
+ int j = i;
+
+ // find module that matches the shortest sequence of names
+ while (j < names.length) {
+
+ // construct module name
+ if (moduleName == null) {
+ moduleName = names[j];
+ } else {
+ moduleName = moduleName + "-" + names[j];
+ }
+
+ // find module with name <names[i]>-...-<names[j]>
+ module = current.getModule(moduleName);
+
+ if (module != null) {
+ // module found, stop
+ break;
+ }
+
+ // try again with longer sequence
+ j++;
+ }
+
+ if (module == null)
+ throw new Error("Invalid module \"" + moduleName + "\".");
+
+ // module found
+ results.add(module);
+
+ // repeat for the remaining parts
+ current = module;
+ i = j + 1;
+ }
+
+ return results;
+ }
+
+ /**
+ * Find the last module that handles the specified command.
+ */
+ public CLI findModule(String command) throws Exception {
+ List<CLI> modules = findModules(command);
+ return modules.get(modules.size() - 1);
+ }
+
+ public String getManPage() {
+ return null;
+ }
+
public PKIClient getClient() {
return client;
}
@@ -182,6 +252,8 @@ public class CLI {
System.exit(0);
}
+ // TODO: Rewrite using findModules().
+
// A command consists of parts joined by dashes: <part 1>-<part 2>-...-<part N>.
// For example: cert-request-find
String command = args[0];
diff --git a/base/java-tools/src/com/netscape/cmstools/cli/HelpCLI.java b/base/java-tools/src/com/netscape/cmstools/cli/HelpCLI.java
index 6b2a123d0..b348ffc20 100644
--- a/base/java-tools/src/com/netscape/cmstools/cli/HelpCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/cli/HelpCLI.java
@@ -18,6 +18,8 @@
package com.netscape.cmstools.cli;
+import java.util.List;
+
import org.apache.commons.cli.CommandLine;
/**
@@ -51,19 +53,32 @@ public class HelpCLI extends CLI {
String[] cmdArgs = cmd.getArgs();
- String command;
+ String manPage = null;
if (cmdArgs.length == 0) {
- command = "pki";
+ // no command specified, show the pki man page
+ manPage = parent.getManPage();
} else {
- command = "pki-" + cmdArgs[0];
+ // find all modules handling the specified command
+ List<CLI> modules = parent.findModules(cmdArgs[0]);
+
+ // find the module that has a man page starting from the last one
+ for (int i = modules.size() - 1; i >= 0; i--) {
+ CLI module = modules.get(i);
+ manPage = module.getManPage();
+ if (manPage != null) break;
+ }
+
+ // if no module has a man page, show the pki man page
+ if (manPage == null)
+ manPage = parent.getManPage();
}
while (true) {
// display man page for the command
ProcessBuilder pb = new ProcessBuilder(
"/bin/man",
- command);
+ manPage);
pb.inheritIO();
Process p = pb.start();
@@ -71,10 +86,10 @@ public class HelpCLI extends CLI {
if (rc == 16) {
// man page not found, find the parent command
- int i = command.lastIndexOf('-');
+ int i = manPage.lastIndexOf('-');
if (i >= 0) {
// parent command exists, try again
- command = command.substring(0, i);
+ manPage = manPage.substring(0, i);
continue;
} else {
diff --git a/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java b/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
index 17929221b..77245ec53 100644
--- a/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
@@ -89,6 +89,11 @@ public class MainCLI extends CLI {
return moduleName;
}
+ @Override
+ public String getManPage() {
+ return "pki";
+ }
+
public void printVersion() {
Package pkg = MainCLI.class.getPackage();
System.out.println("PKI Command-Line Interface "+pkg.getImplementationVersion());
diff --git a/base/java-tools/src/com/netscape/cmstools/client/ClientCLI.java b/base/java-tools/src/com/netscape/cmstools/client/ClientCLI.java
index c9c71521a..f09ea74e9 100644
--- a/base/java-tools/src/com/netscape/cmstools/client/ClientCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/client/ClientCLI.java
@@ -50,6 +50,11 @@ public class ClientCLI extends CLI {
}
}
+ @Override
+ public String getManPage() {
+ return "pki-client";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();
diff --git a/base/java-tools/src/com/netscape/cmstools/group/GroupCLI.java b/base/java-tools/src/com/netscape/cmstools/group/GroupCLI.java
index 973e0bae6..ca151301e 100644
--- a/base/java-tools/src/com/netscape/cmstools/group/GroupCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/group/GroupCLI.java
@@ -54,6 +54,11 @@ public class GroupCLI extends CLI {
}
}
+ @Override
+ public String getManPage() {
+ return "pki-group";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();
diff --git a/base/java-tools/src/com/netscape/cmstools/group/GroupMemberCLI.java b/base/java-tools/src/com/netscape/cmstools/group/GroupMemberCLI.java
index e21d8175b..1df404bc5 100644
--- a/base/java-tools/src/com/netscape/cmstools/group/GroupMemberCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/group/GroupMemberCLI.java
@@ -40,6 +40,11 @@ public class GroupMemberCLI extends CLI {
addModule(new GroupMemberRemoveCLI(this));
}
+ @Override
+ public String getManPage() {
+ return "pki-group-member";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();
diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java
index fb324be25..d83bcf2fc 100644
--- a/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java
@@ -65,6 +65,11 @@ public class KeyCLI extends CLI {
}
}
+ @Override
+ public String getManPage() {
+ return "pki-key";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();
diff --git a/base/java-tools/src/com/netscape/cmstools/logging/AuditCLI.java b/base/java-tools/src/com/netscape/cmstools/logging/AuditCLI.java
index 11e530066..531d92020 100644
--- a/base/java-tools/src/com/netscape/cmstools/logging/AuditCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/logging/AuditCLI.java
@@ -41,6 +41,11 @@ public class AuditCLI extends CLI {
addModule(new AuditShowCLI(this));
}
+ @Override
+ public String getManPage() {
+ return "pki-audit";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();
diff --git a/base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java b/base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java
index e9e21596a..ecfa75340 100644
--- a/base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java
@@ -51,6 +51,11 @@ public class ProfileCLI extends CLI {
}
}
+ @Override
+ public String getManPage() {
+ return "pki-ca-profile";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();
diff --git a/base/java-tools/src/com/netscape/cmstools/system/SecurityDomainCLI.java b/base/java-tools/src/com/netscape/cmstools/system/SecurityDomainCLI.java
index b1a359788..0c2ed37d8 100644
--- a/base/java-tools/src/com/netscape/cmstools/system/SecurityDomainCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/system/SecurityDomainCLI.java
@@ -47,6 +47,11 @@ public class SecurityDomainCLI extends CLI {
}
}
+ @Override
+ public String getManPage() {
+ return "pki-securitydomain";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();
diff --git a/base/java-tools/src/com/netscape/cmstools/user/UserCLI.java b/base/java-tools/src/com/netscape/cmstools/user/UserCLI.java
index 7a03d3384..5382c4711 100644
--- a/base/java-tools/src/com/netscape/cmstools/user/UserCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/user/UserCLI.java
@@ -57,6 +57,11 @@ public class UserCLI extends CLI {
}
}
+ @Override
+ public String getManPage() {
+ return "pki-user";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();
diff --git a/base/java-tools/src/com/netscape/cmstools/user/UserCertCLI.java b/base/java-tools/src/com/netscape/cmstools/user/UserCertCLI.java
index ead915a66..d8ea91720 100644
--- a/base/java-tools/src/com/netscape/cmstools/user/UserCertCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/user/UserCertCLI.java
@@ -40,6 +40,11 @@ public class UserCertCLI extends CLI {
addModule(new UserCertRemoveCLI(this));
}
+ @Override
+ public String getManPage() {
+ return "pki-user-cert";
+ }
+
public void execute(String[] args) throws Exception {
client = parent.getClient();