From 0ba528039e4dd6761f284c33e12243287bf38f50 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 17 Nov 2016 23:44:10 -0800 Subject: [PATCH] Revert "ListPlugins: Remove deprecated --format option" Removing the --format option from the REST API had the side effect of also removing it from the 'plugin ls' ssh command. Removing the option from the 'plugin ls' is a breaking change for some users, so put it back. This reverts commit 3bbd3c313fc0fbfcf364b4697e75cae6674230df. Change-Id: I2f4af48f16273f4875b28349e5afd707f2103bec --- .../gerrit/server/plugins/ListPlugins.java | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ListPlugins.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ListPlugins.java index e0545a33b3..b9871ab655 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ListPlugins.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ListPlugins.java @@ -40,6 +40,10 @@ import java.util.TreeMap; public class ListPlugins implements RestReadView { private final PluginLoader pluginLoader; + @Deprecated + @Option(name = "--format", usage = "(deprecated) output format") + private OutputFormat format = OutputFormat.TEXT; + @Option(name = "--all", aliases = {"-a"}, usage = "List all plugins, including disabled plugins") private boolean all; @@ -48,12 +52,23 @@ public class ListPlugins implements RestReadView { this.pluginLoader = pluginLoader; } + public OutputFormat getFormat() { + return format; + } + + public ListPlugins setFormat(OutputFormat fmt) { + this.format = fmt; + return this; + } + @Override public Object apply(TopLevelResource resource) { + format = OutputFormat.JSON; return display(null); } public JsonElement display(PrintWriter stdout) { + Map output = new TreeMap<>(); List plugins = Lists.newArrayList(pluginLoader.getPlugins(all)); Collections.sort(plugins, new Comparator() { @Override @@ -62,24 +77,30 @@ public class ListPlugins implements RestReadView { } }); - if (stdout == null) { - Map output = new TreeMap<>(); - for (Plugin p : plugins) { - PluginInfo info = new PluginInfo(p); + if (!format.isJson()) { + stdout.format("%-30s %-10s %-8s %s\n", "Name", "Version", "Status", "File"); + stdout.print("-------------------------------------------------------------------------------\n"); + } + + for (Plugin p : plugins) { + PluginInfo info = new PluginInfo(p); + if (format.isJson()) { output.put(p.getName(), info); + } else { + stdout.format("%-30s %-10s %-8s %s\n", p.getName(), + Strings.nullToEmpty(info.version), + p.isDisabled() ? "DISABLED" : "ENABLED", + p.getSrcFile().getFileName()); } + } + + if (stdout == null) { return OutputFormat.JSON.newGson().toJsonTree( output, new TypeToken>() {}.getType()); - } - stdout.format("%-30s %-10s %-8s %s\n", "Name", "Version", "Status", "File"); - stdout.print("-------------------------------------------------------------------------------\n"); - for (Plugin p : plugins) { - PluginInfo info = new PluginInfo(p); - stdout.format("%-30s %-10s %-8s %s\n", p.getName(), - Strings.nullToEmpty(info.version), - p.isDisabled() ? "DISABLED" : "ENABLED", - p.getSrcFile().getFileName()); + } else if (format.isJson()) { + format.newGson().toJson(output, + new TypeToken>() {}.getType(), stdout); stdout.print('\n'); } stdout.flush();