Repository: karaf
Updated Branches:
  refs/heads/master c46360535 -> 3ce89098b


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

Branch: refs/heads/master
Commit: 3ce89098bf499b360369319a603bcc2176f8f348
Parents: c463605
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:20:03 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/3ce89098/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 a2df5c5..05f567f 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 {
             final Console console = System.console();
             client = SshClient.setUpDefaultClient();
@@ -135,6 +136,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();
@@ -154,7 +158,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/3ce89098/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 62d8ba6..94ae6ce 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
@@ -84,6 +84,7 @@ public class ShellCommand implements Command, SessionAware {
     }
 
     public void start(final Environment env) throws IOException {
+        int exitStatus = 0;
         try {
             final Session session = sessionFactory.create(in, new 
PrintStream(out), new PrintStream(err));
             for (Map.Entry<String,String> e : env.getEnv().entrySet()) {
@@ -115,13 +116,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