github.com/raychaser/docker@v1.5.0/project/make/validate-gofmt (about)

     1  #!/bin/bash
     2  
     3  source "$(dirname "$BASH_SOURCE")/.validate"
     4  
     5  IFS=$'\n'
     6  files=( $(validate_diff --diff-filter=ACMR --name-only -- '*.go' | grep -v '^vendor/' || true) )
     7  unset IFS
     8  
     9  badFiles=()
    10  for f in "${files[@]}"; do
    11  	# we use "git show" here to validate that what's committed is formatted
    12  	if [ "$(git show "$VALIDATE_HEAD:$f" | gofmt -s -l)" ]; then
    13  		badFiles+=( "$f" )
    14  	fi
    15  done
    16  
    17  if [ ${#badFiles[@]} -eq 0 ]; then
    18  	echo 'Congratulations!  All Go source files are properly formatted.'
    19  else
    20  	{
    21  		echo "These files are not properly gofmt'd:"
    22  		for f in "${badFiles[@]}"; do
    23  			echo " - $f"
    24  		done
    25  		echo
    26  		echo 'Please reformat the above files using "gofmt -s -w" and commit the result.'
    27  		echo
    28  	} >&2
    29  	false
    30  fi