From df9687bf02a860ab1926484b98abb482489fbe79 Mon Sep 17 00:00:00 2001 From: Deluan Date: Mon, 7 Mar 2016 14:38:43 -0500 Subject: [PATCH] Prefer using goimports over gofmt --- bin/fmt.sh | 6 ++++-- bin/pre-commit | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100755 bin/pre-commit diff --git a/bin/fmt.sh b/bin/fmt.sh index 8c9b3a23f..0920e7651 100755 --- a/bin/fmt.sh +++ b/bin/fmt.sh @@ -1,11 +1,13 @@ #!/usr/bin/env bash +gofmtcmd=`which goimports || echo "gofmt"` + gofiles=$(git diff --name-only --diff-filter=ACM | grep '.go$') [ -z "$gofiles" ] && exit 0 -unformatted=$(gofmt -l $gofiles) +unformatted=`$gofmtcmd -l $gofiles` [ -z "$unformatted" ] && exit 0 for f in $unformatted; do - go fmt "$f" + $gofmtcmd -w -l "$f" done \ No newline at end of file diff --git a/bin/pre-commit b/bin/pre-commit new file mode 100755 index 000000000..bdaa125ea --- /dev/null +++ b/bin/pre-commit @@ -0,0 +1,28 @@ +#!/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. + +gofmtcmd=`which goimports || echo "gofmt"` + +gofiles=$(git diff --cached --name-only --diff-filter=ACM | grep '.go$') +[ -z "$gofiles" ] && exit 0 + +unformatted=$($gofmtcmd -l $gofiles) +[ -z "$unformatted" ] && exit 0 + +# Some files are not gofmt'd. Print message and fail. + +echo >&2 "Go files must be formatted with $gofmcmd. Please run:" +for fn in $unformatted; do + echo >&2 " $gofmtcmd -w $PWD/$fn" +done + +exit 1