From ef2a013db35f6c5ac65546857df27b584e176307 Mon Sep 17 00:00:00 2001 From: AsamK Date: Fri, 20 Aug 2021 18:43:54 +0200 Subject: [PATCH] Let commands specify their own default output if none is provided by the user --- src/main/java/org/asamk/signal/App.java | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) 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"); -- 2.50.1