]> nmode's Git Repositories - signal-cli/commitdiff
Improve return codes
authorAsamK <asamk@gmx.de>
Thu, 14 Jul 2016 14:20:14 +0000 (16:20 +0200)
committerAsamK <asamk@gmx.de>
Thu, 14 Jul 2016 14:20:14 +0000 (16:20 +0200)
Always return non-zero code, when sending failed

Fixes #22

src/main/java/org/asamk/signal/Main.java

index 14eb985aa59d25e6b6370a427b841eb05ffd66be..3b76a2b842a23a6357030433a8fd55b1b8ae1090 100644 (file)
@@ -64,6 +64,11 @@ public class Main {
             System.exit(1);
         }
 
             System.exit(1);
         }
 
+        int res = handleCommands(ns);
+        System.exit(res);
+    }
+
+    private static int handleCommands(Namespace ns) {
         final String username = ns.getString("username");
         Manager m;
         Signal ts;
         final String username = ns.getString("username");
         Manager m;
         Signal ts;
@@ -87,8 +92,7 @@ public class Main {
                     if (dBusConn != null) {
                         dBusConn.disconnect();
                     }
                     if (dBusConn != null) {
                         dBusConn.disconnect();
                     }
-                    System.exit(3);
-                    return;
+                    return 3;
                 }
             } else {
                 String settingsPath = ns.getString("config");
                 }
             } else {
                 String settingsPath = ns.getString("config");
@@ -109,8 +113,7 @@ public class Main {
                         m.load();
                     } catch (Exception e) {
                         System.err.println("Error loading state file \"" + m.getFileName() + "\": " + e.getMessage());
                         m.load();
                     } catch (Exception e) {
                         System.err.println("Error loading state file \"" + m.getFileName() + "\": " + e.getMessage());
-                        System.exit(2);
-                        return;
+                        return 2;
                     }
                 }
             }
                     }
                 }
             }
@@ -119,7 +122,7 @@ public class Main {
                 case "register":
                     if (dBusConn != null) {
                         System.err.println("register is not yet implemented via dbus");
                 case "register":
                     if (dBusConn != null) {
                         System.err.println("register is not yet implemented via dbus");
-                        System.exit(1);
+                        return 1;
                     }
                     if (!m.userHasKeys()) {
                         m.createNewIdentity();
                     }
                     if (!m.userHasKeys()) {
                         m.createNewIdentity();
@@ -128,33 +131,33 @@ public class Main {
                         m.register(ns.getBoolean("voice"));
                     } catch (IOException e) {
                         System.err.println("Request verify error: " + e.getMessage());
                         m.register(ns.getBoolean("voice"));
                     } catch (IOException e) {
                         System.err.println("Request verify error: " + e.getMessage());
-                        System.exit(3);
+                        return 3;
                     }
                     break;
                 case "verify":
                     if (dBusConn != null) {
                         System.err.println("verify is not yet implemented via dbus");
                     }
                     break;
                 case "verify":
                     if (dBusConn != null) {
                         System.err.println("verify is not yet implemented via dbus");
-                        System.exit(1);
+                        return 1;
                     }
                     if (!m.userHasKeys()) {
                         System.err.println("User has no keys, first call register.");
                     }
                     if (!m.userHasKeys()) {
                         System.err.println("User has no keys, first call register.");
-                        System.exit(1);
+                        return 1;
                     }
                     if (m.isRegistered()) {
                         System.err.println("User registration is already verified");
                     }
                     if (m.isRegistered()) {
                         System.err.println("User registration is already verified");
-                        System.exit(1);
+                        return 1;
                     }
                     try {
                         m.verifyAccount(ns.getString("verificationCode"));
                     } catch (IOException e) {
                         System.err.println("Verify error: " + e.getMessage());
                     }
                     try {
                         m.verifyAccount(ns.getString("verificationCode"));
                     } catch (IOException e) {
                         System.err.println("Verify error: " + e.getMessage());
-                        System.exit(3);
+                        return 3;
                     }
                     break;
                 case "link":
                     if (dBusConn != null) {
                         System.err.println("link is not yet implemented via dbus");
                     }
                     break;
                 case "link":
                     if (dBusConn != null) {
                         System.err.println("link is not yet implemented via dbus");
-                        System.exit(1);
+                        return 1;
                     }
 
                     // When linking, username is null and we always have to create keys
                     }
 
                     // When linking, username is null and we always have to create keys
@@ -170,48 +173,48 @@ public class Main {
                         System.out.println("Associated with: " + m.getUsername());
                     } catch (TimeoutException e) {
                         System.err.println("Link request timed out, please try again.");
                         System.out.println("Associated with: " + m.getUsername());
                     } catch (TimeoutException e) {
                         System.err.println("Link request timed out, please try again.");
-                        System.exit(3);
+                        return 3;
                     } catch (IOException e) {
                         System.err.println("Link request error: " + e.getMessage());
                     } catch (IOException e) {
                         System.err.println("Link request error: " + e.getMessage());
-                        System.exit(3);
+                        return 3;
                     } catch (InvalidKeyException e) {
                         e.printStackTrace();
                     } catch (InvalidKeyException e) {
                         e.printStackTrace();
-                        System.exit(3);
+                        return 2;
                     } catch (UserAlreadyExists e) {
                         System.err.println("The user " + e.getUsername() + " already exists\nDelete \"" + e.getFileName() + "\" before trying again.");
                     } catch (UserAlreadyExists e) {
                         System.err.println("The user " + e.getUsername() + " already exists\nDelete \"" + e.getFileName() + "\" before trying again.");
-                        System.exit(3);
+                        return 1;
                     }
                     break;
                 case "addDevice":
                     if (dBusConn != null) {
                         System.err.println("link is not yet implemented via dbus");
                     }
                     break;
                 case "addDevice":
                     if (dBusConn != null) {
                         System.err.println("link is not yet implemented via dbus");
-                        System.exit(1);
+                        return 1;
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
-                        System.exit(1);
+                        return 1;
                     }
                     try {
                         m.addDeviceLink(new URI(ns.getString("uri")));
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                     try {
                         m.addDeviceLink(new URI(ns.getString("uri")));
                     } catch (IOException e) {
                         e.printStackTrace();
-                        System.exit(3);
+                        return 3;
                     } catch (InvalidKeyException e) {
                         e.printStackTrace();
                     } catch (InvalidKeyException e) {
                         e.printStackTrace();
-                        System.exit(2);
+                        return 2;
                     } catch (URISyntaxException e) {
                         e.printStackTrace();
                     } catch (URISyntaxException e) {
                         e.printStackTrace();
-                        System.exit(2);
+                        return 2;
                     }
                     break;
                 case "listDevices":
                     if (dBusConn != null) {
                         System.err.println("listDevices is not yet implemented via dbus");
                     }
                     break;
                 case "listDevices":
                     if (dBusConn != null) {
                         System.err.println("listDevices is not yet implemented via dbus");
-                        System.exit(1);
+                        return 1;
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
-                        System.exit(1);
+                        return 1;
                     }
                     try {
                         List<DeviceInfo> devices = m.getLinkedDevices();
                     }
                     try {
                         List<DeviceInfo> devices = m.getLinkedDevices();
@@ -223,48 +226,52 @@ public class Main {
                         }
                     } catch (IOException e) {
                         e.printStackTrace();
                         }
                     } catch (IOException e) {
                         e.printStackTrace();
-                        System.exit(3);
+                        return 3;
                     }
                     break;
                 case "removeDevice":
                     if (dBusConn != null) {
                         System.err.println("removeDevice is not yet implemented via dbus");
                     }
                     break;
                 case "removeDevice":
                     if (dBusConn != null) {
                         System.err.println("removeDevice is not yet implemented via dbus");
-                        System.exit(1);
+                        return 1;
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
-                        System.exit(1);
+                        return 1;
                     }
                     try {
                         int deviceId = ns.getInt("deviceId");
                         m.removeLinkedDevices(deviceId);
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                     try {
                         int deviceId = ns.getInt("deviceId");
                         m.removeLinkedDevices(deviceId);
                     } catch (IOException e) {
                         e.printStackTrace();
-                        System.exit(3);
+                        return 3;
                     }
                     break;
                 case "send":
                     if (dBusConn == null && !m.isRegistered()) {
                         System.err.println("User is not registered.");
                     }
                     break;
                 case "send":
                     if (dBusConn == null && !m.isRegistered()) {
                         System.err.println("User is not registered.");
-                        System.exit(1);
+                        return 1;
                     }
 
                     if (ns.getBoolean("endsession")) {
                         if (ns.getList("recipient") == null) {
                             System.err.println("No recipients given");
                             System.err.println("Aborting sending.");
                     }
 
                     if (ns.getBoolean("endsession")) {
                         if (ns.getList("recipient") == null) {
                             System.err.println("No recipients given");
                             System.err.println("Aborting sending.");
-                            System.exit(1);
+                            return 1;
                         }
                         try {
                             ts.sendEndSessionMessage(ns.<String>getList("recipient"));
                         } catch (IOException e) {
                             handleIOException(e);
                         }
                         try {
                             ts.sendEndSessionMessage(ns.<String>getList("recipient"));
                         } catch (IOException e) {
                             handleIOException(e);
+                            return 3;
                         } catch (EncapsulatedExceptions e) {
                             handleEncapsulatedExceptions(e);
                         } catch (EncapsulatedExceptions e) {
                             handleEncapsulatedExceptions(e);
+                            return 3;
                         } catch (AssertionError e) {
                             handleAssertionError(e);
                         } catch (AssertionError e) {
                             handleAssertionError(e);
+                            return 1;
                         } catch (DBusExecutionException e) {
                             handleDBusExecutionException(e);
                         } catch (DBusExecutionException e) {
                             handleDBusExecutionException(e);
+                            return 1;
                         }
                     } else {
                         String messageText = ns.getString("message");
                         }
                     } else {
                         String messageText = ns.getString("message");
@@ -274,7 +281,7 @@ public class Main {
                             } catch (IOException e) {
                                 System.err.println("Failed to read message from stdin: " + e.getMessage());
                                 System.err.println("Aborting sending.");
                             } catch (IOException e) {
                                 System.err.println("Failed to read message from stdin: " + e.getMessage());
                                 System.err.println("Aborting sending.");
-                                System.exit(1);
+                                return 1;
                             }
                         }
 
                             }
                         }
 
@@ -291,18 +298,23 @@ public class Main {
                             }
                         } catch (IOException e) {
                             handleIOException(e);
                             }
                         } catch (IOException e) {
                             handleIOException(e);
+                            return 3;
                         } catch (EncapsulatedExceptions e) {
                             handleEncapsulatedExceptions(e);
                         } catch (EncapsulatedExceptions e) {
                             handleEncapsulatedExceptions(e);
+                            return 3;
                         } catch (AssertionError e) {
                             handleAssertionError(e);
                         } catch (AssertionError e) {
                             handleAssertionError(e);
+                            return 1;
                         } catch (GroupNotFoundException e) {
                             handleGroupNotFoundException(e);
                         } catch (GroupNotFoundException e) {
                             handleGroupNotFoundException(e);
+                            return 1;
                         } catch (AttachmentInvalidException e) {
                             System.err.println("Failed to add attachment: " + e.getMessage());
                             System.err.println("Aborting sending.");
                         } catch (AttachmentInvalidException e) {
                             System.err.println("Failed to add attachment: " + e.getMessage());
                             System.err.println("Aborting sending.");
-                            System.exit(1);
+                            return 1;
                         } catch (DBusExecutionException e) {
                             handleDBusExecutionException(e);
                         } catch (DBusExecutionException e) {
                             handleDBusExecutionException(e);
+                            return 1;
                         }
                     }
 
                         }
                     }
 
@@ -330,18 +342,19 @@ public class Main {
                             });
                         } catch (DBusException e) {
                             e.printStackTrace();
                             });
                         } catch (DBusException e) {
                             e.printStackTrace();
+                            return 1;
                         }
                         while (true) {
                             try {
                                 Thread.sleep(10000);
                             } catch (InterruptedException e) {
                         }
                         while (true) {
                             try {
                                 Thread.sleep(10000);
                             } catch (InterruptedException e) {
-                                System.exit(0);
+                                return 0;
                             }
                         }
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
                             }
                         }
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
-                        System.exit(1);
+                        return 1;
                     }
                     int timeout = 5;
                     if (ns.getInt("timeout") != null) {
                     }
                     int timeout = 5;
                     if (ns.getInt("timeout") != null) {
@@ -356,42 +369,47 @@ public class Main {
                         m.receiveMessages(timeout, returnOnTimeout, new ReceiveMessageHandler(m));
                     } catch (IOException e) {
                         System.err.println("Error while receiving messages: " + e.getMessage());
                         m.receiveMessages(timeout, returnOnTimeout, new ReceiveMessageHandler(m));
                     } catch (IOException e) {
                         System.err.println("Error while receiving messages: " + e.getMessage());
-                        System.exit(3);
+                        return 3;
                     } catch (AssertionError e) {
                         handleAssertionError(e);
                     } catch (AssertionError e) {
                         handleAssertionError(e);
+                        return 1;
                     }
                     break;
                 case "quitGroup":
                     if (dBusConn != null) {
                         System.err.println("quitGroup is not yet implemented via dbus");
                     }
                     break;
                 case "quitGroup":
                     if (dBusConn != null) {
                         System.err.println("quitGroup is not yet implemented via dbus");
-                        System.exit(1);
+                        return 1;
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
-                        System.exit(1);
+                        return 1;
                     }
 
                     try {
                         m.sendQuitGroupMessage(decodeGroupId(ns.getString("group")));
                     } catch (IOException e) {
                         handleIOException(e);
                     }
 
                     try {
                         m.sendQuitGroupMessage(decodeGroupId(ns.getString("group")));
                     } catch (IOException e) {
                         handleIOException(e);
+                        return 3;
                     } catch (EncapsulatedExceptions e) {
                         handleEncapsulatedExceptions(e);
                     } catch (EncapsulatedExceptions e) {
                         handleEncapsulatedExceptions(e);
+                        return 3;
                     } catch (AssertionError e) {
                         handleAssertionError(e);
                     } catch (AssertionError e) {
                         handleAssertionError(e);
+                        return 1;
                     } catch (GroupNotFoundException e) {
                         handleGroupNotFoundException(e);
                     } catch (GroupNotFoundException e) {
                         handleGroupNotFoundException(e);
+                        return 1;
                     }
 
                     break;
                 case "updateGroup":
                     if (dBusConn != null) {
                         System.err.println("updateGroup is not yet implemented via dbus");
                     }
 
                     break;
                 case "updateGroup":
                     if (dBusConn != null) {
                         System.err.println("updateGroup is not yet implemented via dbus");
-                        System.exit(1);
+                        return 1;
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
-                        System.exit(1);
+                        return 1;
                     }
 
                     try {
                     }
 
                     try {
@@ -405,25 +423,28 @@ public class Main {
                         }
                     } catch (IOException e) {
                         handleIOException(e);
                         }
                     } catch (IOException e) {
                         handleIOException(e);
+                        return 3;
                     } catch (AttachmentInvalidException e) {
                         System.err.println("Failed to add avatar attachment for group\": " + e.getMessage());
                         System.err.println("Aborting sending.");
                     } catch (AttachmentInvalidException e) {
                         System.err.println("Failed to add avatar attachment for group\": " + e.getMessage());
                         System.err.println("Aborting sending.");
-                        System.exit(1);
+                        return 1;
                     } catch (GroupNotFoundException e) {
                         handleGroupNotFoundException(e);
                     } catch (GroupNotFoundException e) {
                         handleGroupNotFoundException(e);
+                        return 1;
                     } catch (EncapsulatedExceptions e) {
                         handleEncapsulatedExceptions(e);
                     } catch (EncapsulatedExceptions e) {
                         handleEncapsulatedExceptions(e);
+                        return 3;
                     }
 
                     break;
                 case "daemon":
                     if (dBusConn != null) {
                         System.err.println("Stop it.");
                     }
 
                     break;
                 case "daemon":
                     if (dBusConn != null) {
                         System.err.println("Stop it.");
-                        System.exit(1);
+                        return 1;
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
                     }
                     if (!m.isRegistered()) {
                         System.err.println("User is not registered.");
-                        System.exit(1);
+                        return 1;
                     }
                     DBusConnection conn = null;
                     try {
                     }
                     DBusConnection conn = null;
                     try {
@@ -439,15 +460,16 @@ public class Main {
                             conn.requestBusName(SIGNAL_BUSNAME);
                         } catch (DBusException e) {
                             e.printStackTrace();
                             conn.requestBusName(SIGNAL_BUSNAME);
                         } catch (DBusException e) {
                             e.printStackTrace();
-                            System.exit(3);
+                            return 2;
                         }
                         try {
                             m.receiveMessages(3600, false, new DbusReceiveMessageHandler(m, conn));
                         } catch (IOException e) {
                             System.err.println("Error while receiving messages: " + e.getMessage());
                         }
                         try {
                             m.receiveMessages(3600, false, new DbusReceiveMessageHandler(m, conn));
                         } catch (IOException e) {
                             System.err.println("Error while receiving messages: " + e.getMessage());
-                            System.exit(3);
+                            return 3;
                         } catch (AssertionError e) {
                             handleAssertionError(e);
                         } catch (AssertionError e) {
                             handleAssertionError(e);
+                            return 1;
                         }
                     } finally {
                         if (conn != null) {
                         }
                     } finally {
                         if (conn != null) {
@@ -457,7 +479,7 @@ public class Main {
 
                     break;
             }
 
                     break;
             }
-            System.exit(0);
+            return 0;
         } finally {
             if (dBusConn != null) {
                 dBusConn.disconnect();
         } finally {
             if (dBusConn != null) {
                 dBusConn.disconnect();
@@ -468,13 +490,11 @@ public class Main {
     private static void handleGroupNotFoundException(GroupNotFoundException e) {
         System.err.println("Failed to send to group: " + e.getMessage());
         System.err.println("Aborting sending.");
     private static void handleGroupNotFoundException(GroupNotFoundException e) {
         System.err.println("Failed to send to group: " + e.getMessage());
         System.err.println("Aborting sending.");
-        System.exit(1);
     }
 
     private static void handleDBusExecutionException(DBusExecutionException e) {
         System.err.println("Cannot connect to dbus: " + e.getMessage());
         System.err.println("Aborting.");
     }
 
     private static void handleDBusExecutionException(DBusExecutionException e) {
         System.err.println("Cannot connect to dbus: " + e.getMessage());
         System.err.println("Aborting.");
-        System.exit(1);
     }
 
     private static byte[] decodeGroupId(String groupId) {
     }
 
     private static byte[] decodeGroupId(String groupId) {
@@ -617,7 +637,6 @@ public class Main {
         System.err.println("Failed to send/receive message (Assertion): " + e.getMessage());
         e.printStackTrace();
         System.err.println("If you use an Oracle JRE please check if you have unlimited strength crypto enabled, see README");
         System.err.println("Failed to send/receive message (Assertion): " + e.getMessage());
         e.printStackTrace();
         System.err.println("If you use an Oracle JRE please check if you have unlimited strength crypto enabled, see README");
-        System.exit(1);
     }
 
     private static void handleEncapsulatedExceptions(EncapsulatedExceptions e) {
     }
 
     private static void handleEncapsulatedExceptions(EncapsulatedExceptions e) {