.tool/lint: Use 'command -v' to detect LINTER presence

There was a 'command -v' check back when this script landed in
aa748b62 (makefile stuff, 2016-09-19, #30), but it was removed in
741873ad (Makefile: suggests install.tools, 2016-09-28, #70).  The
default changed from 'gometalinter' to '${GOPATH}/bin/gometalinter' in
6c9628cd (Build and install from GOPATH, 2017-01-17, #320) and the -f
guard landed in 9c240aed (lint: Exit and give instructions when linter
missing, 2017-09-06, #850).  This commit brings us back to our
original 'command -v' check (in POSIX [1]), which allows support for
both filesystem and $PATH based commands (and shell aliases, etc.).

I've also made the default LINTER more flexible, using the
${parameter:-word} syntax from POSIX [2].  That keeps the default
linter unchanged, but allows callers to set the LINTER environent
variable to override.  For example:

  $ LINTER=gometalinter .tool/lint

will use the linter from your $PATH.

[1]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html
[2]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02

Signed-off-by: W. Trevor King <wking@tremily.us>
This commit is contained in:
W. Trevor King 2018-01-25 15:40:13 -08:00
parent 4b658672aa
commit 64bc1c7226

View file

@ -5,10 +5,10 @@ set -o nounset
set -o pipefail
# Create the linter path for use later
LINTER=${GOPATH}/bin/gometalinter
LINTER="${LINTER:-${GOPATH}/bin/gometalinter}"
# Make sure gometalinter is installed
if [ ! -f ${LINTER} ]; then
if ! command -v ${LINTER} >/dev/null 2>/dev/null; then
echo >&2 "gometalinter must be installed. Please run 'make install.tools' and try again"
exit 1
fi