From a58d15512d57a41cc132acd81c34195f17c4ec87 Mon Sep 17 00:00:00 2001 From: Henri Koski Date: Fri, 12 Jul 2019 03:08:22 +0300 Subject: [PATCH] Add dry-run and show flags --- .gitignore | 1 + .goreleaser.yml | 1 + cmd/go-review/main.go | 28 +++++++++++++++++++++------- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index c995533..2348375 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ *.out target/ +dist/ diff --git a/.goreleaser.yml b/.goreleaser.yml index 691958c..4892f91 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -6,6 +6,7 @@ before: builds: - env: - CGO_ENABLED=0 + - GO111MODULE=on main: ./cmd/go-review/main.go goos: - linux diff --git a/cmd/go-review/main.go b/cmd/go-review/main.go index a0c76ff..4181be2 100644 --- a/cmd/go-review/main.go +++ b/cmd/go-review/main.go @@ -4,6 +4,7 @@ import ( "context" "flag" "fmt" + "io" "os" "github.com/heppu/go-review" @@ -14,13 +15,17 @@ var ( version = "dev" commit = "none" date = "unknown" + + ver = flag.Bool("version", false, "print versions details and exit") + dry = flag.Bool("dry-run", false, "parse env vars and input but do not publish review") + show = flag.Bool("show", false, "print lines while parsing") ) func main() { - v := flag.Bool("version", false, "print versions details and exit") flag.Parse() - if *v { - fmt.Printf("%v, commit %v, built at %v", version, commit, date) + + if *ver { + fmt.Fprintf(os.Stderr, "%v, commit %v, built at %v\n", version, commit, date) os.Exit(0) } @@ -35,11 +40,16 @@ func main() { auth = gerrit.BasicAuth(username, password) } - comments, err := review.LinesToReviewComments(os.Stdin) + var input io.Reader = os.Stdin + if *show { + input = io.TeeReader(os.Stdin, os.Stdout) + } + + comments, err := review.LinesToReviewComments(input) if err != nil { - fmt.Println(err) + fmt.Fprintln(os.Stderr, err) if err == review.ErrNoProblemsFound { - os.Exit(0) + return } os.Exit(1) } @@ -48,6 +58,10 @@ func main() { Comments: comments, } + if *dry { + return + } + c := gerrit.NewClient(reviewURL, auth) if err := c.SetReview(context.Background(), changeID, revision, r); err != nil { fmt.Println(err) @@ -59,7 +73,7 @@ func main() { func parseEnv(name string, must bool) string { val := os.Getenv(name) if must && val == "" { - fmt.Printf("%s must be set", name) + fmt.Fprintf(os.Stderr, "%s must be set\n", name) os.Exit(1) } return val