summaryrefslogtreecommitdiffstats
path: root/base/java-tools/src/com/netscape/cmstools/cli/CLI.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/java-tools/src/com/netscape/cmstools/cli/CLI.java')
-rw-r--r--base/java-tools/src/com/netscape/cmstools/cli/CLI.java35
1 files changed, 35 insertions, 0 deletions
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 4911b8ae2..60db7a151 100644
--- a/base/java-tools/src/com/netscape/cmstools/cli/CLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/cli/CLI.java
@@ -18,6 +18,7 @@
package com.netscape.cmstools.cli;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
@@ -351,4 +352,38 @@ public class CLI {
public static void setVerbose(boolean verbose) {
CLI.verbose = verbose;
}
+
+ public void runExternal(List<String> command) throws CLIException, IOException, InterruptedException {
+ String[] array = command.toArray(new String[command.size()]);
+ runExternal(array);
+ }
+
+ public void runExternal(String[] command) throws CLIException, IOException, InterruptedException {
+
+ if (verbose) {
+
+ System.out.print("External command:");
+
+ for (String c : command) {
+
+ boolean quote = c.contains(" ");
+
+ System.out.print(" ");
+
+ if (quote) System.out.print("\"");
+ System.out.print(c);
+ if (quote) System.out.print("\"");
+ }
+
+ System.out.println();
+ }
+
+ Runtime rt = Runtime.getRuntime();
+ Process p = rt.exec(command);
+ int rc = p.waitFor();
+
+ if (rc != 0) {
+ throw new CLIException("External command failed. RC: " + rc, rc);
+ }
+ }
}