diff options
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.java | 35 |
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); + } + } } |