+ case "link":
+ if (dBusConn != null) {
+ System.err.println("link is not yet implemented via dbus");
+ System.exit(1);
+ }
+
+ // When linking, username is null and we always have to create keys
+ m.createNewIdentity();
+
+ String deviceName = ns.getString("name");
+ if (deviceName == null) {
+ deviceName = "cli";
+ }
+ try {
+ System.out.println(m.getDeviceLinkUri());
+ m.finishDeviceLink(deviceName);
+ System.out.println("Associated with: " + m.getUsername());
+ } catch (TimeoutException e) {
+ System.err.println("Link request timed out, please try again.");
+ System.exit(3);
+ } catch (IOException e) {
+ System.err.println("Link request error: " + e.getMessage());
+ System.exit(3);
+ } catch (InvalidKeyException e) {
+ e.printStackTrace();
+ System.exit(3);
+ } catch (UserAlreadyExists e) {
+ System.err.println("The user " + e.getUsername() + " already exists\nDelete \"" + e.getFileName() + "\" before trying again.");
+ System.exit(3);
+ }
+ break;