Provide json output from the version programm and SSH command
Release-Notes: skip
Change-Id: Id03267c3eafea970d3532f2cf513638c28dfb136
diff --git a/Documentation/cmd-version.txt b/Documentation/cmd-version.txt
index 67259a1..3e53678 100644
--- a/Documentation/cmd-version.txt
+++ b/Documentation/cmd-version.txt
@@ -8,6 +8,7 @@
--
_ssh_ -p <port> <host> _gerrit version_
[--verbose | -v]
+ [--json]
--
== DESCRIPTION
@@ -37,6 +38,9 @@
-v::
Verbose output, include also the NoteDb version and the version of each index.
+--json::
+ Json output format. Assumes verbose output.
+
== EXAMPLES
----
diff --git a/java/com/google/gerrit/pgm/BUILD b/java/com/google/gerrit/pgm/BUILD
index ea9edb6..8523e8a 100644
--- a/java/com/google/gerrit/pgm/BUILD
+++ b/java/com/google/gerrit/pgm/BUILD
@@ -20,6 +20,7 @@
"//java/com/google/gerrit/httpd/auth/restapi",
"//java/com/google/gerrit/index",
"//java/com/google/gerrit/index/project",
+ "//java/com/google/gerrit/json",
"//java/com/google/gerrit/launcher",
"//java/com/google/gerrit/lifecycle",
"//java/com/google/gerrit/lucene",
@@ -57,5 +58,6 @@
"//lib/prolog:cafeteria",
"//lib/prolog:compiler",
"//lib/prolog:runtime",
+ "@gson//jar",
],
)
diff --git a/java/com/google/gerrit/pgm/Version.java b/java/com/google/gerrit/pgm/Version.java
index ea11932..27c52d3 100644
--- a/java/com/google/gerrit/pgm/Version.java
+++ b/java/com/google/gerrit/pgm/Version.java
@@ -15,6 +15,7 @@
package com.google.gerrit.pgm;
import com.google.gerrit.extensions.common.VersionInfo;
+import com.google.gerrit.json.OutputFormat;
import com.google.gerrit.pgm.util.AbstractProgram;
import com.google.gerrit.server.version.VersionInfoModule;
import org.kohsuke.args4j.Option;
@@ -28,6 +29,9 @@
usage = "verbose version info")
private boolean verbose;
+ @Option(name = "--json", usage = "json output format, assumes verbose output")
+ private boolean json;
+
@Override
public int run() throws Exception {
VersionInfo versionInfo = new VersionInfoModule().createVersionInfo();
@@ -36,7 +40,9 @@
return 1;
}
- if (verbose) {
+ if (json) {
+ System.out.println(OutputFormat.JSON.newGson().toJson(versionInfo));
+ } else if (verbose) {
System.out.print(versionInfo.verbose());
} else {
System.out.print(versionInfo.compact());
diff --git a/java/com/google/gerrit/sshd/commands/VersionCommand.java b/java/com/google/gerrit/sshd/commands/VersionCommand.java
index f78cad4..c274b3d 100644
--- a/java/com/google/gerrit/sshd/commands/VersionCommand.java
+++ b/java/com/google/gerrit/sshd/commands/VersionCommand.java
@@ -17,6 +17,7 @@
import static com.google.gerrit.sshd.CommandMetaData.Mode.MASTER_OR_SLAVE;
import com.google.gerrit.extensions.common.VersionInfo;
+import com.google.gerrit.json.OutputFormat;
import com.google.gerrit.sshd.CommandMetaData;
import com.google.gerrit.sshd.SshCommand;
import com.google.inject.Inject;
@@ -31,6 +32,9 @@
usage = "verbose version info")
private boolean verbose;
+ @Option(name = "--json", usage = "json output format, assumes verbose output")
+ private boolean json;
+
@Inject private VersionInfo versionInfo;
@Override
@@ -40,7 +44,9 @@
throw new Failure(1, "fatal: version unavailable");
}
- if (verbose) {
+ if (json) {
+ stdout.println(OutputFormat.JSON.newGson().toJson(versionInfo));
+ } else if (verbose) {
stdout.print(versionInfo.verbose());
} else {
stdout.print(versionInfo.compact());