Repository: karaf Updated Branches: refs/heads/karaf-2.x c1bcfc02f -> 10208c4c4
[KARAF-2623] Improve exit code for SSH/client Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/10208c4c Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/10208c4c Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/10208c4c Branch: refs/heads/karaf-2.x Commit: 10208c4c4f01a1638098d2e0c786cd1d3aef9dac Parents: c1bcfc0 Author: Jean-Baptiste Onofré <[email protected]> Authored: Mon Apr 7 09:52:29 2014 +0200 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Mon Apr 7 09:52:29 2014 +0200 ---------------------------------------------------------------------- client/src/main/java/org/apache/karaf/client/Main.java | 6 +++++- .../java/org/apache/karaf/shell/ssh/ShellCommandFactory.java | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/10208c4c/client/src/main/java/org/apache/karaf/client/Main.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/karaf/client/Main.java b/client/src/main/java/org/apache/karaf/client/Main.java index a025fb3..d6b8150 100644 --- a/client/src/main/java/org/apache/karaf/client/Main.java +++ b/client/src/main/java/org/apache/karaf/client/Main.java @@ -139,6 +139,7 @@ public class Main { SshClient client = null; Terminal terminal = null; SshAgent agent = null; + int exitStatus = 0; try { agent = startAgent(user); client = SshClient.setUpDefaultClient(); @@ -201,6 +202,9 @@ public class Main { channel.setErr(AnsiConsole.wrapOutputStream(System.err)); channel.open(); channel.waitFor(ClientChannel.CLOSED, 0); + if (channel.getExitStatus() != null) { + exitStatus = channel.getExitStatus(); + } } catch (Throwable t) { if (level > 1) { t.printStackTrace(); @@ -218,7 +222,7 @@ public class Main { } } catch (Throwable t) { } } - System.exit(0); + System.exit(exitStatus); } protected static SshAgent startAgent(String user) { http://git-wip-us.apache.org/repos/asf/karaf/blob/10208c4c/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java ---------------------------------------------------------------------- diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java index 7ffca91..ce6d3b6 100644 --- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java +++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java @@ -97,6 +97,7 @@ public class ShellCommandFactory implements CommandFactory { } public void start(final Environment env) throws IOException { + int exitStatus = 0; try { final CommandSession session = commandProcessor.createSession(in, new PrintStream(out), new PrintStream(err)); session.put("SCOPE", "shell:osgi:*"); @@ -129,6 +130,7 @@ public class ShellCommandFactory implements CommandFactory { session.getConsole().println(session.format(result, Converter.INSPECT)); } } catch (Throwable t) { + exitStatus = 1; try { boolean isCommandNotFound = "org.apache.felix.gogo.runtime.CommandNotFoundException".equals(t.getClass().getName()); if (isCommandNotFound) { @@ -149,7 +151,7 @@ public class ShellCommandFactory implements CommandFactory { .fg(Ansi.Color.DEFAULT).toString(); session.getConsole().println(str); } - if ( getBoolean(session, Console.PRINT_STACK_TRACES)) { + if (getBoolean(session, Console.PRINT_STACK_TRACES)) { session.getConsole().print(Ansi.ansi().fg(Ansi.Color.RED).toString()); t.printStackTrace(session.getConsole()); session.getConsole().print(Ansi.ansi().fg(Ansi.Color.DEFAULT).toString()); @@ -166,10 +168,11 @@ public class ShellCommandFactory implements CommandFactory { } } } catch (Exception e) { + exitStatus = 1; throw (IOException) new IOException("Unable to start shell").initCause(e); } finally { close(in, out, err); - callback.onExit(0); + callback.onExit(exitStatus); } }
