From 2f652ca26a8aa5876786c9db562a8022c79ada29 Mon Sep 17 00:00:00 2001 From: Aleksey Lobanov Date: Sun, 16 Aug 2020 20:03:56 +0300 Subject: [PATCH] Using pipe instead of temp file --- main.go | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/main.go b/main.go index e8fb391..a41ec2d 100644 --- a/main.go +++ b/main.go @@ -1,10 +1,9 @@ package main import ( - "bytes" "context" "fmt" - "os" + "os/exec" "log" @@ -13,8 +12,6 @@ import ( "github.com/minio/minio-go/v7/pkg/notification" ) -const TMP_FILE = "_tmp_out" - func processEncryption( config *AppConfig, internalMinio *minio.Client, @@ -55,40 +52,31 @@ func processEncryption( cmd := exec.Command("gpg", "--encrypt", "--recipient-file", ENCRYPT_KEY_PATH) cmd.Stdin = objectReader - var out bytes.Buffer - cmd.Stdout = &out - err = cmd.Run() + stdout, err := cmd.StdoutPipe() if err != nil { log.Fatalln(err) } - - f, err := os.Create(TMP_FILE) - if err != nil { + if err = cmd.Start(); err != nil { log.Fatalln(err) } - defer f.Close() - f.Write(out.Bytes()) - - tmp_file, err := os.Open(TMP_FILE) - if err != nil { - log.Fatalln(err) - } - defer tmp_file.Close() - defer os.Remove(TMP_FILE) - - uploadInfo, err := targetMinio.PutObject( + uploadInfo, err_put := targetMinio.PutObject( context.Background(), bucket, name+".gpg", - tmp_file, + stdout, -1, minio.PutObjectOptions{ ContentType: "application/octet-stream", UserMetadata: map[string]string{"gpg": "true"}, }, ) - if err != nil { + + if err = cmd.Wait(); err != nil { + return err + } + + if err_put != nil { fmt.Println(err) return nil }