X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/f449a242e4341a8dabc62efe6ce33682e71b386f..48b2c7ff8ad7b653c3a0cb42775a5850f593d0a0:/src/main/java/org/asamk/signal/App.java diff --git a/src/main/java/org/asamk/signal/App.java b/src/main/java/org/asamk/signal/App.java index 9e410d2f..33338a4c 100644 --- a/src/main/java/org/asamk/signal/App.java +++ b/src/main/java/org/asamk/signal/App.java @@ -76,11 +76,10 @@ public class App { var subparsers = parser.addSubparsers().title("subcommands").dest("command"); - final var commands = Commands.getCommands(); - for (var entry : commands.entrySet()) { - var subparser = subparsers.addParser(entry.getKey()); - entry.getValue().attachToSubparser(subparser); - } + Commands.getCommandSubparserAttachers().forEach((key, value) -> { + var subparser = subparsers.addParser(key); + value.attachToSubparser(subparser); + }); return parser; } @@ -90,13 +89,17 @@ public class App { } public void init() throws CommandException { + var outputType = ns.get("output"); + var outputWriter = outputType == OutputType.JSON + ? new JsonWriter(System.out) + : new PlainTextWriterImpl(System.out); + var commandKey = ns.getString("command"); - var command = Commands.getCommand(commandKey); + var command = Commands.getCommand(commandKey, outputWriter); if (command == null) { throw new UserErrorException("Command not implemented!"); } - var outputType = ns.get("output"); if (!command.getSupportedOutputTypes().contains(outputType)) { throw new UserErrorException("Command doesn't support output type " + outputType.toString()); }