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());