Repository: karaf
Updated Branches:
  refs/heads/karaf-3.0.x 6e1fb913e -> caef545fb


[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/caef545f
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/caef545f
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/caef545f

Branch: refs/heads/karaf-3.0.x
Commit: caef545fb022bd03b4f267557b2bfb566a94af4a
Parents: 6e1fb91
Author: Jean-Baptiste Onofré <[email protected]>
Authored: Mon Apr 7 09:20:03 2014 +0200
Committer: Jean-Baptiste Onofré <[email protected]>
Committed: Mon Apr 7 09:21:53 2014 +0200

----------------------------------------------------------------------
 client/src/main/java/org/apache/karaf/client/Main.java         | 6 +++++-
 .../src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java | 5 ++++-
 2 files changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/caef545f/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 81e0cf1..1c1f7b9 100644
--- a/client/src/main/java/org/apache/karaf/client/Main.java
+++ b/client/src/main/java/org/apache/karaf/client/Main.java
@@ -74,6 +74,7 @@ public class Main {
 
         SshClient client = null;
         Terminal terminal = null;
+        int exitStatus = 0;
         try {
             client = SshClient.setUpDefaultClient();
             setupAgent(config.getUser(), client);
@@ -134,6 +135,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 (config.getLevel() > SimpleLogger.WARN) {
                 t.printStackTrace();
@@ -153,7 +157,7 @@ public class Main {
             } catch (Throwable t) {
             }
         }
-        System.exit(0);
+        System.exit(exitStatus);
     }
 
     private static void setupAgent(String user, SshClient client) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/caef545f/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java
----------------------------------------------------------------------
diff --git 
a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java 
b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java
index a825f07..39bf3fa 100644
--- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java
+++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommand.java
@@ -85,6 +85,7 @@ public class ShellCommand implements Command, SessionAware {
     }
 
     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:*");
@@ -117,13 +118,15 @@ public class ShellCommand implements Command, 
SessionAware {
                     session.getConsole().println(session.format(result, 
Converter.INSPECT));
                 }
             } catch (Throwable t) {
+                exitStatus = 1;
                 ShellUtil.logException(session, t);
             }
         } catch (Exception e) {
+            exitStatus = 1;
             throw (IOException) new IOException("Unable to start 
shell").initCause(e);
         } finally {
             StreamUtils.close(in, out, err);
-            callback.onExit(0);
+            callback.onExit(exitStatus);
         }
     }
 

Reply via email to