aboutsummaryrefslogtreecommitdiffstats
path: root/vespaclient-java/src/main/java/com/yahoo/vespa/security/tool/CliUtils.java
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2022-10-31 16:33:17 +0100
committerTor Brede Vekterli <vekterli@yahooinc.com>2022-10-31 16:33:17 +0100
commitc1f6b93a94d8bb75707cb2643abf026eca45be7d (patch)
tree18926d0b6c0001742dbc18a102e9cf0c826a559d /vespaclient-java/src/main/java/com/yahoo/vespa/security/tool/CliUtils.java
parentb3adc4839d28db03dc675ca18d95b9bf71a4c465 (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.java27
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));
+ }
+ }
+
}