|  | #!/bin/sh | 
|  | # Copyright 2012 The Go Authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style | 
|  | # license that can be found in the LICENSE file. | 
|  |  | 
|  | # git gofmt pre-commit hook | 
|  | # | 
|  | # To use, store as .git/hooks/pre-commit inside your repository and make sure | 
|  | # it has execute permissions. | 
|  | # | 
|  | # This script does not handle file names that contain spaces. | 
|  |  | 
|  | gofiles=$(git diff --cached --name-only --diff-filter=ACM | grep '.go$') | 
|  | [ -z "$gofiles" ] && exit 0 | 
|  |  | 
|  | unformatted=$(gofmt -l $gofiles) | 
|  | [ -z "$unformatted" ] && exit 0 | 
|  |  | 
|  | # Some files are not gofmt'd. Print message and fail. | 
|  |  | 
|  | echo >&2 "Go files must be formatted with gofmt. Please run:" | 
|  | for fn in $unformatted; do | 
|  | echo >&2 "  gofmt -w $PWD/$fn" | 
|  | done | 
|  |  | 
|  | exit 1 |