From 7b2615b81a27631882e289e9460fe738d1fa2644 Mon Sep 17 00:00:00 2001 From: Damien List Date: Mon, 3 May 2021 20:53:03 +0200 Subject: [PATCH 1/2] allow to write|append stdout to a file --- main.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/main.go b/main.go index 0ee0e7f..b78d72f 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "io/ioutil" "bytes" "flag" "fmt" @@ -20,6 +21,8 @@ type request struct { emails string timeout time.Duration transport string + write string + append string verbose bool } @@ -47,6 +50,8 @@ func main() { flag.DurationVar(&req.timeout, "t", 0, `Timeout for the command, like "-t 2h", "-t 2m", or "-t 30s". After the timeout, the command is killed, disabled by default`) flag.StringVar(&req.transport, "p", "auto", `Transport to use, like "-p auto", "-p mail", "-p sendmail"`) flag.BoolVar(&req.verbose, "v", false, "Enable sending emails even if command is successful") + flag.StringVar(&req.write, "w", "", `write stdout to a file`) + flag.StringVar(&req.append, "a", "", `append stdout to a file`) flag.BoolVar(&versionf, "version", false, "Output the version") flag.Parse() @@ -114,6 +119,25 @@ func execCmd(path string, req request) result { r.stopped = time.Now() + if req.write != "" || req.append != "" { + + if req.write != "" { + err := ioutil.WriteFile("temp.txt", r.stdout.Bytes(), 0644) + if err != nil { + log.Fatalln(err) + } + } else { + file, err := os.OpenFile("temp.txt", os.O_APPEND|os.O_WRONLY, 0644) + if err != nil { + log.Fatalln(err) + } + defer file.Close() + if _, err := file.WriteString(r.stdout.String()); err != nil { + log.Fatalln(err) + } + } + } + return r } From 56e42ded3e6eb954b9137c52c8df85faf372f601 Mon Sep 17 00:00:00 2001 From: Damien List Date: Mon, 3 May 2021 21:09:29 +0200 Subject: [PATCH 2/2] remove fixed file temp.txt to replace it by args provided in command line. --- main.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index b78d72f..3489384 100644 --- a/main.go +++ b/main.go @@ -122,12 +122,12 @@ func execCmd(path string, req request) result { if req.write != "" || req.append != "" { if req.write != "" { - err := ioutil.WriteFile("temp.txt", r.stdout.Bytes(), 0644) + err := ioutil.WriteFile(req.write, r.stdout.Bytes(), 0644) if err != nil { log.Fatalln(err) } } else { - file, err := os.OpenFile("temp.txt", os.O_APPEND|os.O_WRONLY, 0644) + file, err := os.OpenFile(req.append, os.O_APPEND|os.O_WRONLY, 0644) if err != nil { log.Fatalln(err) }