Skip to content

Commit

Permalink
Fix error handling in mage build
Browse files Browse the repository at this point in the history
* print gofmt errors
* don't error on lint failures
* explanatory comments and fix an error text
  • Loading branch information
natefinch authored and bep committed Oct 21, 2017
1 parent 1d52bfb commit c9c19d7
Showing 1 changed file with 23 additions and 5 deletions.
28 changes: 23 additions & 5 deletions magefile.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package main
import (
"bytes"
"errors"
"fmt"
"io/ioutil"
"os"
"path/filepath"
Expand Down Expand Up @@ -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)
}
}
}
Expand Down Expand Up @@ -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
}
Expand All @@ -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
}
Expand Down

0 comments on commit c9c19d7

Please sign in to comment.