Fix quit command and move help command
[kaka/cakelight.git] / src / kaka / cakelight / Commands.java
index 048e6c6..a5b612c 100644 (file)
@@ -2,6 +2,7 @@ package kaka.cakelight;
 
 import kaka.cakelight.mode.AmbientMode;
 import kaka.cakelight.mode.SingleColorMode;
+import kaka.cakelight.mode.SunriseMode;
 import kaka.cakelight.mode.TwoColorNoiseMode;
 import kaka.cakelight.mode.VideoMode;
 
@@ -24,10 +25,19 @@ class Commands {
        };
     }
 
+    static Console.Command help() {
+       return command(new String[] {"?", "h", "help"}, (console, args) -> {
+           for (Console.Command c : console.getCommands()) {
+               System.out.println(String.join("|", c.getNames()));
+           }
+           return true;
+       });
+    }
+
     static Console.Command quit() {
        return command(new String[] {"q", "quit"}, (console, args) -> {
-           console.getCakelight().turnOff();
-           console.out("stopping cakelight");
+           console.quit();
+           console.out("terminating");
            return true;
        });
     }
@@ -64,7 +74,7 @@ class Commands {
     static Console.Command brightness() {
        return command(new String[] {"b", "brightness"}, (console, args) -> {
            if (args.length == 1) {
-               int b = Integer.parseInt(args[0].replaceAll("\\+-", ""));
+               int b = Integer.parseInt(args[0].replaceAll("[+-]+", ""));
                if (args[0].startsWith("+")) {
                    b = Math.min(console.getConfig().leds.brightness + b, 31);
                } else if (args[0].startsWith("-")) {
@@ -132,4 +142,17 @@ class Commands {
            }
        });
     }
+
+    static Console.Command sunriseMode() {
+        return command(new String[] {"sunrise"}, (console, args) -> {
+           if (args.length == 1) {
+               int durationSeconds = Integer.parseInt(args[0]);
+               console.getCakelight().setMode(new SunriseMode(durationSeconds));
+               console.out("setting sunrise mode with duration " + durationSeconds);
+               return true;
+           } else {
+               return false;
+           }
+       });
+    }
 }