diff options
author | Nate Finch <[email protected]> | 2017-10-21 11:37:00 -0400 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2017-10-21 17:37:00 +0200 |
commit | c9c19d794537cf76ff281788c3d6cf5f2beac54d (patch) | |
tree | a24e159108a189a7a7af11cbf7bec01ac39ccc77 /magefile.go | |
parent | 1d52bfbb4792f86b85ae5bca7af5b75bb5c69289 (diff) | |
download | hugo-c9c19d794537cf76ff281788c3d6cf5f2beac54d.tar.gz hugo-c9c19d794537cf76ff281788c3d6cf5f2beac54d.zip |
Fix error handling in mage build
* print gofmt errors
* don't error on lint failures
* explanatory comments and fix an error text
Diffstat (limited to 'magefile.go')
-rw-r--r-- | magefile.go | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/magefile.go b/magefile.go index 3800f49b6..89bbd7481 100644 --- a/magefile.go +++ b/magefile.go @@ -5,6 +5,7 @@ package main import ( "bytes" "errors" + "fmt" "io/ioutil" "os" "path/filepath" @@ -124,14 +125,28 @@ func Fmt() error { return err } failed := false + first := true for _, pkg := range pkgs { files, err := filepath.Glob(filepath.Join(pkg, "*.go")) if err != nil { return nil } for _, f := range files { - if err := sh.Run("gofmt", "-l", f); err != nil { - failed = false + // gofmt doesn't exit with non-zero when it finds unformatted code + // so we have to explicitly look for output, and if we find any, we + // should fail this target. + s, err := sh.Output("gofmt", "-l", f) + if err != nil { + fmt.Printf("ERROR: running gofmt on %q: %v\n", f, err) + failed = true + } + if s != "" { + if first { + fmt.Println("The following files are not gofmt'ed:") + first = false + } + failed = true + fmt.Println(s) } } } @@ -164,12 +179,15 @@ func Lint() error { } failed := false for _, pkg := range pkgs { - if _, err := sh.Exec(nil, os.Stderr, os.Stderr, "golint", "-set_exit_status", pkg); err != nil { + // We don't actually want to fail this target if we find golint errors, + // so we don't pass -set_exit_status, but we still print out any failures. + if _, err := sh.Exec(nil, os.Stderr, nil, "golint", pkg); err != nil { + fmt.Printf("ERROR: running go lint on %q: %v\n", pkg, err) failed = true } } if failed { - return errors.New("golint errors!") + return errors.New("errors running golint") } return nil } @@ -178,7 +196,7 @@ func Lint() error { func Vet() error { mg.Deps(govendor) if err := sh.Run("govendor", "vet", "+local"); err != nil { - return errors.New("go vet errors!") + return fmt.Errorf("error running govendor: %v", err) } return nil } |