Fix quit command and move help command
authorTomas Wenström <tomas.wenstrom@gmail.com>
Thu, 28 Nov 2019 21:31:26 +0000 (22:31 +0100)
committerTomas Wenström <tomas.wenstrom@gmail.com>
Thu, 28 Nov 2019 21:31:26 +0000 (22:31 +0100)
src/kaka/cakelight/Commands.java
src/kaka/cakelight/Console.java

index 1a6a850..a5b612c 100644 (file)
@@ -25,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;
        });
     }
index 873dac1..3f9bce9 100644 (file)
@@ -9,6 +9,7 @@ import java.util.List;
 import java.util.Map;
 
 public class Console extends Thread {
+    private boolean running;
     private CakeLight cakelight;
     private Configuration config;
     private Map<String, Command> commands = new HashMap<>();
@@ -23,7 +24,7 @@ public class Console extends Thread {
     private Console(CakeLight cakelight, Configuration config) {
         this.cakelight = cakelight;
        this.config = config;
-       register(new HelpCommand());
+       register(Commands.help());
        register(Commands.quit());
        register(Commands.video());
        register(Commands.color());
@@ -43,18 +44,13 @@ public class Console extends Thread {
        return config;
     }
 
-    private class HelpCommand implements Command {
-       @Override
-       public String[] getNames() {
-           return new String[] {"?", "h", "help"};
-       }
+    List<Command> getCommands() {
+        return commandList;
+    }
 
-       @Override
-       public void activate(Console console, String[] args) {
-           for (Command c : commandList) {
-               System.out.println(String.join("|", c.getNames()));
-           }
-       }
+    void quit() {
+        cakelight.turnOff();
+        running = false;
     }
 
     private void register(Command cmd) {
@@ -70,8 +66,9 @@ public class Console extends Thread {
 
     @Override
     public void run() {
+       running = true;
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
-           while (true) {
+           while (running) {
                System.out.print("> ");
                String input = reader.readLine();
                handleInput(input);