Makefile: Use 'git diff' to show gofmt changes

This makes fixing errors easier.  Before this commit, errors looked
like [1]:

  $ make gofmt
  libpod/container_linux.go:1:⚠️ file is not gofmted with -s (gofmt)
  make: *** [gofmt] Error 1

But that's not very helpful when your local gofmt thinks the file is
fine.  With this commit, errors will look like:

  $ make gofmt
  find . -name '*.go' ! -path './vendor/*' -exec gofmt -s -w {} \+
  git diff --exit-code
  diff --git a/libpod/container_internal.go b/libpod/container_internal.go
  index df4de3fe..22b39870 100644
  --- a/libpod/container_internal.go
  +++ b/libpod/container_internal.go
  @@ -1,7 +1,7 @@
   package libpod

   import (
  -"bytes"
  +       "bytes"
          "context"
          "encoding/json"
          "fmt"
  make: *** [Makefile:87: gofmt] Error 1

(or whatever, I just stuffed in a formatting error for demonstration
purposes).

Also remove the helper script in favor of direct Makefile calls,
because with Git handling difference reporting and exit status, this
becomes a simpler check.  find's -exec, !, and -path arguments are
specified in POSIX [2].

[1]: https://travis-ci.org/kubernetes-incubator/cri-o/jobs/331949394#L1075
[2]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html

Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #1038
Approved by: rhatdan
This commit is contained in:
W. Trevor King
2018-07-02 08:45:06 -07:00
committed by Atomic Bot
parent 40e4481bd8
commit 7a5c376e63
2 changed files with 2 additions and 43 deletions

View File

@ -83,10 +83,8 @@ lint: .gopathok varlink_generate
@./.tool/lint
gofmt:
@./hack/verify-gofmt.sh
fix_gofmt:
@./hack/verify-gofmt.sh -f
find . -name '*.go' ! -path './vendor/*' -exec gofmt -s -w {} \+
git diff --exit-code
test/bin2img/bin2img: .gopathok $(wildcard test/bin2img/*.go)
$(GO) build -ldflags '$(LDFLAGS)' -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/bin2img

View File

@ -1,39 +0,0 @@
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
find_files() {
find . -not \( \
\( \
-wholename '*/vendor/*' \
\) -prune \
\) -name '*.go' \
-not \( -wholename './_output/*' \) \
-not \( -wholename './cmd/podman/ioprojectatomicpodman/ioprojectatomicpodman.go' \)
}
FIX=0
GOFMT="gofmt -s"
bad_files=$(find_files | xargs $GOFMT -l)
while getopts "f?:" opt; do
case "$opt" in
f) FIX=1
;;
esac
done
if [[ -n "${bad_files}" ]]; then
if (($FIX == 1)) ; then
echo "Correcting the following files:"
echo "${bad_files}"
while read -r go_file; do
gofmt -s -w $go_file
done <<< "${bad_files}"
else
echo "!!! '$GOFMT' needs to be run on the following files: "
echo "${bad_files}"
exit 1
fi
fi