Skip to content

Commit

Permalink
chore: add checkfmt.sh in workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
chengshiwen committed Aug 28, 2024
1 parent cfbed24 commit f84e9ba
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 5 deletions.
13 changes: 8 additions & 5 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,21 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: 1.21

- name: Fmt
run: ./checkfmt.sh

- name: Vet
run: go vet ./...

- name: Build
run: go build ./...

- name: Test
run: go test -race ./...

- name: Vet
run: go vet ./...
31 changes: 31 additions & 0 deletions checkfmt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/bash

go install golang.org/x/tools/cmd/goimports

HAS_FMT_ERR=0
# For every Go file in the project, excluding vendor...

for file in $(go list -f '{{$dir := .Dir}}{{range .GoFiles}}{{printf "%s/%s\n" $dir .}}{{end}}{{range .TestGoFiles}}{{printf "%s/%s\n" $dir .}}{{end}}{{range .IgnoredGoFiles}}{{printf "%s/%s\n" $dir .}}{{end}}{{range .CgoFiles}}{{printf "%s/%s\n" $dir .}}{{end}}' ./... ); do
# ... if file does not contain standard generated code comment (https://golang.org/s/generatedcode)...
if ! grep -Exq '^// Code generated .* DO NOT EDIT\.$' $file; then
FMT_OUT="$(goimports -l -d $file)"
# ... and if goimports had any output...
if [[ -n "$FMT_OUT" ]]; then
if [ "$HAS_FMT_ERR" -eq "0" ]; then
# Only print this once.
HAS_FMT_ERR=1
echo 'Commit includes files that are not gofmt-ed' && \
echo 'run "make fmt"' && \
echo ''
fi
echo "$FMT_OUT" # Print output and continue, so developers don't fix one file at a t
fi
fi
done

## print at the end too... sometimes it is nice to see what to do at the end.
if [ "$HAS_FMT_ERR" -eq "1" ]; then
echo 'Commit includes files that are not gofmt-ed' && \
echo ''
fi
exit "$HAS_FMT_ERR"

0 comments on commit f84e9ba

Please sign in to comment.