From: AsamK Date: Fri, 20 Aug 2021 16:43:54 +0000 (+0200) Subject: Let commands specify their own default output if none is provided by the user X-Git-Tag: v0.9.0~68 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/ef2a013db35f6c5ac65546857df27b584e176307 Let commands specify their own default output if none is provided by the user --- diff --git a/src/main/java/org/asamk/signal/App.java b/src/main/java/org/asamk/signal/App.java index 12227a8e..6b31e2bc 100644 --- a/src/main/java/org/asamk/signal/App.java +++ b/src/main/java/org/asamk/signal/App.java @@ -67,8 +67,7 @@ public class App { parser.addArgument("-o", "--output") .help("Choose to output in plain text or JSON") - .type(Arguments.enumStringType(OutputType.class)) - .setDefault(OutputType.PLAIN_TEXT); + .type(Arguments.enumStringType(OutputType.class)); parser.addArgument("--service-environment") .help("Choose the server environment to use.") @@ -90,19 +89,22 @@ public class App { } public void init() throws CommandException { - var outputType = ns.get("output"); - var outputWriter = outputType == OutputType.JSON - ? new JsonWriterImpl(System.out) - : new PlainTextWriterImpl(System.out); - var commandKey = ns.getString("command"); var command = Commands.getCommand(commandKey); if (command == null) { throw new UserErrorException("Command not implemented!"); } - if (!command.getSupportedOutputTypes().contains(outputType)) { - throw new UserErrorException("Command doesn't support output type " + outputType.toString()); + var outputTypeInput = ns.get("output"); + var outputType = outputTypeInput == null + ? command.getSupportedOutputTypes().stream().findFirst().orElse(null) + : outputTypeInput; + var outputWriter = outputType == null + ? null + : outputType == OutputType.JSON ? new JsonWriterImpl(System.out) : new PlainTextWriterImpl(System.out); + + if (outputWriter != null && !command.getSupportedOutputTypes().contains(outputType)) { + throw new UserErrorException("Command doesn't support output type " + outputType); } var username = ns.getString("username");