diff options
author | Tor Brede Vekterli <vekterli@yahooinc.com> | 2022-10-31 16:33:17 +0100 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahooinc.com> | 2022-10-31 16:33:17 +0100 |
commit | c1f6b93a94d8bb75707cb2643abf026eca45be7d (patch) | |
tree | 18926d0b6c0001742dbc18a102e9cf0c826a559d /vespaclient-java/src/main/java/com/yahoo/vespa/security/tool/CliUtils.java | |
parent | b3adc4839d28db03dc675ca18d95b9bf71a4c465 (diff) |
Support standard IO streams for several encryption tool commands
Useful for avoiding the need for intermediate files, such as when
piping the output of decryption to a Zstd decompressor.
Adds stdio support to:
* Encryption input
* Decryption input
* Decryption output
Specified by substituting the file name with a single `-` character.
Diffstat (limited to 'vespaclient-java/src/main/java/com/yahoo/vespa/security/tool/CliUtils.java')
-rw-r--r-- | vespaclient-java/src/main/java/com/yahoo/vespa/security/tool/CliUtils.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespa/security/tool/CliUtils.java b/vespaclient-java/src/main/java/com/yahoo/vespa/security/tool/CliUtils.java index e9b348ab2a2..df199c00eda 100644 --- a/vespaclient-java/src/main/java/com/yahoo/vespa/security/tool/CliUtils.java +++ b/vespaclient-java/src/main/java/com/yahoo/vespa/security/tool/CliUtils.java @@ -3,6 +3,12 @@ package com.yahoo.vespa.security.tool; import org.apache.commons.cli.CommandLine; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; + /** * @author vekterli */ @@ -16,4 +22,25 @@ public class CliUtils { return value; } + public static InputStream inputStreamFromFileOrStream(String pathOrDash, InputStream stdIn) throws IOException { + if ("-".equals(pathOrDash)) { + return stdIn; + } else { + var inputPath = Paths.get(pathOrDash); + if (!inputPath.toFile().exists()) { + throw new IllegalArgumentException("Input file '%s' does not exist".formatted(inputPath.toString())); + } + return Files.newInputStream(inputPath); + } + } + + public static OutputStream outputStreamToFileOrStream(String pathOrDash, OutputStream stdOut) throws IOException { + if ("-".equals(pathOrDash)) { + return stdOut; + } else { + // TODO fail if file already exists? + return Files.newOutputStream(Paths.get(pathOrDash)); + } + } + } |