From 8e02a3ac7e8c6a1a61b090bd34d1870645d2a45e Mon Sep 17 00:00:00 2001 From: Geert Bevin Date: Sun, 14 Jul 2024 15:22:45 -0400 Subject: [PATCH] Removed generic json output support and only add it for the help operation --- lib/bld/bld-wrapper.jar | Bin 29578 -> 29686 bytes src/main/java/rife/bld/BuildExecutor.java | 130 +++--------------- .../rife/bld/operations/HelpOperation.java | 30 ++-- src/main/java/rife/bld/wrapper/Wrapper.java | 15 +- .../templates/bld/executor_error.json | 3 - .../templates/bld/executor_execute.json | 8 -- 6 files changed, 54 insertions(+), 132 deletions(-) delete mode 100644 src/main/resources/templates/bld/executor_error.json delete mode 100644 src/main/resources/templates/bld/executor_execute.json diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar index b6de554e2321e646e0f66ba576b0445e0188e138..a9a8defa2b82b1428d775b3ba27f0b10fb248b4c 100644 GIT binary patch delta 15011 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 Be)a$W delta 14954 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 diff --git a/src/main/java/rife/bld/BuildExecutor.java b/src/main/java/rife/bld/BuildExecutor.java index 8848cc2..17eceb6 100644 --- a/src/main/java/rife/bld/BuildExecutor.java +++ b/src/main/java/rife/bld/BuildExecutor.java @@ -39,7 +39,6 @@ public class BuildExecutor { private static final String ARG_HELP3 = "-?"; private static final String ARG_STACKTRACE1 = "--stacktrace"; private static final String ARG_STACKTRACE2 = "-s"; - private static final String ARG_JSON = "--json"; private final HierarchicalProperties properties_; private List arguments_ = Collections.emptyList(); @@ -48,7 +47,6 @@ public class BuildExecutor { private final AtomicReference currentCommandName_ = new AtomicReference<>(); private final AtomicReference currentCommandDefinition_ = new AtomicReference<>(); private int exitStatus_ = 0; - private boolean outputJson_ = false; /** * Show the full Java stacktrace when exceptions occur, as opposed @@ -127,17 +125,6 @@ public class BuildExecutor { return properties; } - /** - * Returns whether output should be in the JSON format. - * - * @return {@code true} if JSON output is enabled; - * or {@code false} otherwise - * @since 2.0 - */ - public boolean outputJson() { - return outputJson_; - } - /** * Returns the properties uses by this conversation. * @@ -227,10 +214,6 @@ public class BuildExecutor { public int execute(String[] arguments) { arguments_ = new ArrayList<>(Arrays.asList(arguments)); - if (!arguments_.isEmpty() && arguments_.get(0).equals(ARG_JSON)) { - outputJson_ = true; - arguments_.remove(0); - } var show_help = false; show_help |= arguments_.removeAll(List.of(ARG_HELP1, ARG_HELP2, ARG_HELP3)); showStacktrace = arguments_.removeAll(List.of(ARG_STACKTRACE1, ARG_STACKTRACE2)); @@ -241,12 +224,11 @@ public class BuildExecutor { return exitStatus_; } - var json_template = TemplateFactory.JSON.get("bld.executor_execute"); while (!arguments_.isEmpty()) { var command = arguments_.remove(0); try { - if (!executeCommand(json_template, command)) { + if (!executeCommand(command)) { break; } } catch (Throwable e) { @@ -256,58 +238,30 @@ public class BuildExecutor { } } - if (outputJson() && exitStatus_ == ExitStatusException.EXIT_SUCCESS) { - System.out.println(json_template.getContent()); - } - return exitStatus_; } private void outputCommandExecutionException(Throwable e) { - if (outputJson()) { - var t = TemplateFactory.JSON.get("bld.executor_error"); - if (showStacktrace) { - t.setValueEncoded("error-message", ExceptionUtils.getExceptionStackTrace(e)); - } - else { - boolean first_exception = true; - var e2 = e; - while (e2 != null) { - if (e2.getMessage() != null) { - t.setValueEncoded("error-message", e2.getMessage()); - first_exception = false; + System.err.println(); + + if (showStacktrace) { + System.err.println(ExceptionUtils.getExceptionStackTrace(e)); + } else { + boolean first_exception = true; + var e2 = e; + while (e2 != null) { + if (e2.getMessage() != null) { + if (!first_exception) { + System.err.print("> "); } - e2 = e2.getCause(); - } - - if (first_exception) { - t.setValueEncoded("error-message", ExceptionUtils.getExceptionStackTrace(e)); + System.err.println(e2.getMessage()); + first_exception = false; } + e2 = e2.getCause(); } - System.out.println(t.getContent()); - } - else { - System.err.println(); - if (showStacktrace) { + if (first_exception) { System.err.println(ExceptionUtils.getExceptionStackTrace(e)); - } else { - boolean first_exception = true; - var e2 = e; - while (e2 != null) { - if (e2.getMessage() != null) { - if (!first_exception) { - System.err.print("> "); - } - System.err.println(e2.getMessage()); - first_exception = false; - } - e2 = e2.getCause(); - } - - if (first_exception) { - System.err.println(ExceptionUtils.getExceptionStackTrace(e)); - } } } } @@ -452,16 +406,6 @@ public class BuildExecutor { * @since 1.5 */ public boolean executeCommand(String command) - throws Throwable { - var json_template = TemplateFactory.JSON.get("bld.executor_execute"); - var result = executeCommand(json_template, command); - if (result && outputJson() && exitStatus_ == ExitStatusException.EXIT_SUCCESS) { - System.out.println(json_template.getContent()); - } - return result; - } - - private boolean executeCommand(Template jsonTemplate, String command) throws Throwable { var matched_command = command; var definition = buildCommands().get(command); @@ -501,24 +445,13 @@ public class BuildExecutor { // only proceed if exactly one match was found if (matches.size() == 1) { matched_command = matches.get(0); - if (!outputJson()) { - System.out.println("Executing matched command: " + matched_command); - } + System.out.println("Executing matched command: " + matched_command); definition = buildCommands().get(matched_command); } } // execute the command if we found one if (definition != null) { - var orig_out = System.out; - var orig_err = System.err; - var out = new ByteArrayOutputStream(); - var err = new ByteArrayOutputStream(); - if (outputJson()) { - System.setOut(new PrintStream(out, true, StandardCharsets.UTF_8)); - System.setErr(new PrintStream(err, true, StandardCharsets.UTF_8)); - } - currentCommandName_.set(matched_command); currentCommandDefinition_.set(definition); try { @@ -529,35 +462,12 @@ public class BuildExecutor { } finally { currentCommandDefinition_.set(null); currentCommandName_.set(null); - - if (outputJson()) { - if (jsonTemplate.isValueSet("commands")) { - jsonTemplate.setValue("separator", ", "); - } - else { - jsonTemplate.blankValue("separator"); - } - jsonTemplate.setValueEncoded("command", matched_command); - jsonTemplate.setValueEncoded("out", out.toString(StandardCharsets.UTF_8)); - jsonTemplate.setValueEncoded("err", err.toString(StandardCharsets.UTF_8)); - jsonTemplate.appendBlock("commands", "command"); - - System.setOut(orig_out); - System.setErr(orig_err); - } } } else { var message = "Unknown command '" + command + "'"; - if (outputJson()) { - var t = TemplateFactory.JSON.get("bld.executor_error"); - t.setValueEncoded("error-message", message); - System.out.println(t.getContent()); - } - else { - new HelpOperation(this, arguments()).executePrintOverviewHelp(); - System.err.println(); - System.err.println("ERROR: " + message); - } + new HelpOperation(this, arguments()).executePrintOverviewHelp(); + System.err.println(); + System.err.println("ERROR: " + message); exitStatus(ExitStatusException.EXIT_FAILURE); return false; } diff --git a/src/main/java/rife/bld/operations/HelpOperation.java b/src/main/java/rife/bld/operations/HelpOperation.java index 1675646..cd0d642 100644 --- a/src/main/java/rife/bld/operations/HelpOperation.java +++ b/src/main/java/rife/bld/operations/HelpOperation.java @@ -20,8 +20,11 @@ import static java.util.Comparator.comparingInt; * @since 1.5 */ public class HelpOperation { + private static final String JSON_ARGUMENT = "--json"; + private final BuildExecutor executor_; private final List arguments_; + private boolean outputJson_ = false; /** * Creates a new help operation. @@ -43,15 +46,25 @@ public class HelpOperation { public void execute() { var topic = ""; if (!arguments_.isEmpty()) { - topic = arguments_.remove(0); + if (arguments_.get(0).equals(JSON_ARGUMENT)) { + arguments_.remove(0); + outputJson_ = true; + } + else { + topic = arguments_.remove(0); + } + } + if (!arguments_.isEmpty() && arguments_.get(0).equals(JSON_ARGUMENT)) { + arguments_.remove(0); + outputJson_ = true; } - if (!executor_.outputJson()) { + if (!outputJson_) { System.err.println("Welcome to bld " + BldVersion.getVersion() + "."); System.err.println(); } - boolean print_full_help = true; + var print_full_help = true; Exception exception = null; try { var commands = executor_.buildCommands(); @@ -59,7 +72,7 @@ public class HelpOperation { var command = commands.get(topic); var help = command.getHelp().getDescription(topic); if (!help.isEmpty()) { - if (executor_.outputJson()) { + if (outputJson_) { var t = TemplateFactory.JSON.get("bld.help_description"); t.setValueEncoded("command", topic); t.setValueEncoded("description", help); @@ -93,7 +106,7 @@ public class HelpOperation { private void executePrintOverviewHelp(Exception exception) { var commands = executor_.buildCommands(); - if (executor_.outputJson()) { + if (outputJson_) { var t = TemplateFactory.JSON.get("bld.help_commands"); if (exception != null) { @@ -125,8 +138,9 @@ public class HelpOperation { perform specific tasks. The help command provides more information about the other commands. - Usage: help [command] - + Usage: help [command] [""" + JSON_ARGUMENT + "]"); + System.err.println(""" + The following commands are supported. """); @@ -141,10 +155,10 @@ public class HelpOperation { System.err.println(""" + --json Output help in JSON format -?, -h, --help Shows this help message -D= Set a JVM system property -s, --stacktrace Print out the stacktrace for exceptions - --json Output in JSON format (only as first argument) """); } } diff --git a/src/main/java/rife/bld/wrapper/Wrapper.java b/src/main/java/rife/bld/wrapper/Wrapper.java index 04ca528..90850cd 100644 --- a/src/main/java/rife/bld/wrapper/Wrapper.java +++ b/src/main/java/rife/bld/wrapper/Wrapper.java @@ -41,6 +41,7 @@ public class Wrapper { public static final String BUILD_ARGUMENT = "--build"; public static final String JSON_ARGUMENT = "--json"; + public static final String HELP_COMMAND = "help"; static final String MAVEN_CENTRAL = "https://repo1.maven.org/maven2/"; static final String SONATYPE_SNAPSHOTS = "https://s01.oss.sonatype.org/content/repositories/snapshots/"; @@ -375,7 +376,7 @@ public class Wrapper { private int installAndLaunch(List arguments) { if (!arguments.isEmpty()) { - File current_file = null; + File current_file; try { current_file = new File(arguments.remove(0)).getCanonicalFile(); } catch (IOException e) { @@ -386,9 +387,17 @@ public class Wrapper { if (BUILD_ARGUMENT.equals(arguments.get(0))) { launchMode_ = LaunchMode.Build; arguments.remove(0); + } - if (arguments.size() >= 2 && JSON_ARGUMENT.equals(arguments.get(1))) { - launchMode_ = LaunchMode.Json; + var help_index = arguments.indexOf(HELP_COMMAND); + if (help_index != -1) { + try { + if (arguments.get(help_index + 1).equals(JSON_ARGUMENT) || + arguments.get(help_index + 2).equals(JSON_ARGUMENT)) { + launchMode_ = LaunchMode.Json; + } + } catch (IndexOutOfBoundsException e) { + // no-op, there are no additional arguments, so definitely no json option } } } diff --git a/src/main/resources/templates/bld/executor_error.json b/src/main/resources/templates/bld/executor_error.json deleted file mode 100644 index 3d62fa2..0000000 --- a/src/main/resources/templates/bld/executor_error.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "error": "{{v error-message/}}" -} diff --git a/src/main/resources/templates/bld/executor_execute.json b/src/main/resources/templates/bld/executor_execute.json deleted file mode 100644 index 5aaf68b..0000000 --- a/src/main/resources/templates/bld/executor_execute.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "commands": {{{v commands}}{{/v}}{{b command}}{{v separator/}} - "{{v command/}}": { - "out": "{{v out/}}", - "err": "{{v err/}}" - }{{/b}} - } -}