From 19b6c8b1e3c918f940baed871c80d8b368bd6e2c Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Mon, 10 Jan 2022 17:11:28 +0100 Subject: [PATCH] SOP-CLI: Implement additional version flags --- .../java/org/pgpainless/sop/VersionImpl.java | 18 ++++++++---- .../sop/cli/picocli/commands/VersionCmd.java | 28 ++++++++++++++++++- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java index d1c15455..7675fcb9 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/VersionImpl.java @@ -6,6 +6,7 @@ package org.pgpainless.sop; import java.io.IOException; import java.io.InputStream; +import java.util.Locale; import java.util.Properties; import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -14,7 +15,7 @@ import sop.operation.Version; public class VersionImpl implements Version { // draft version - private static final String SOP_VERSION = "3"; + private static final String SOP_VERSION = "03"; @Override public String getName() { @@ -42,16 +43,21 @@ public class VersionImpl implements Version { @Override public String getBackendVersion() { double bcVersion = new BouncyCastleProvider().getVersion(); - return String.format("Bouncy Castle %,.2f", bcVersion); + return String.format(Locale.US, "Bouncy Castle %.2f", bcVersion); } @Override public String getExtendedVersion() { return getName() + " " + getVersion() + "\n" + - "Based on PGPainless " + getVersion() + "\n" + - "Using " + getBackendVersion() + "\n" + - "See https://pgpainless.org\n" + + "https://codeberg.org/PGPainless/pgpainless/src/branch/master/pgpainless-sop\n" + + "\n" + "Implementation of the Stateless OpenPGP Protocol Version " + SOP_VERSION + "\n" + - "See https://datatracker.ietf.org/doc/html/draft-dkg-openpgp-stateless-cli-03"; + "https://datatracker.ietf.org/doc/html/draft-dkg-openpgp-stateless-cli-" + SOP_VERSION + "\n" + + "\n" + + "Based on pgpainless-core " + getVersion() + "\n" + + "https://pgpainless.org\n" + + "\n" + + "Using " + getBackendVersion() + "\n" + + "https://www.bouncycastle.org/java.html"; } } diff --git a/sop-java-picocli/src/main/java/sop/cli/picocli/commands/VersionCmd.java b/sop-java-picocli/src/main/java/sop/cli/picocli/commands/VersionCmd.java index 6926c5c9..4a319192 100644 --- a/sop-java-picocli/src/main/java/sop/cli/picocli/commands/VersionCmd.java +++ b/sop-java-picocli/src/main/java/sop/cli/picocli/commands/VersionCmd.java @@ -14,6 +14,19 @@ import sop.operation.Version; exitCodeOnInvalidInput = 37) public class VersionCmd implements Runnable { + @CommandLine.ArgGroup() + Exclusive exclusive; + + static class Exclusive { + @CommandLine.Option(names = "--extended", description = "Print an extended version string.") + boolean extended; + + @CommandLine.Option(names = "--backend", description = "Print information about the cryptographic backend.") + boolean backend; + } + + + @Override public void run() { Version version = SopCLI.getSop().version(); @@ -21,6 +34,19 @@ public class VersionCmd implements Runnable { throw new SOPGPException.UnsupportedSubcommand("Command 'version' not implemented."); } - Print.outln(version.getName() + " " + version.getVersion()); + if (exclusive == null) { + Print.outln(version.getName() + " " + version.getVersion()); + return; + } + + if (exclusive.extended) { + Print.outln(version.getExtendedVersion()); + return; + } + + if (exclusive.backend) { + Print.outln(version.getBackendVersion()); + return; + } } }