816c2a6da9
This will let Docker cache the results of the vendor dependencies. Making re-builds during testing faster. Also clean-up spurious test & rm in ./configure
142 lines
2.8 KiB
Bash
Executable File
142 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
declare -A tools=()
|
|
declare -A desired=()
|
|
|
|
for arg in "$@"; do
|
|
case ${arg%%=*} in
|
|
"--with-go")
|
|
desired[go]="${arg##*=}"
|
|
;;
|
|
"--with-dep")
|
|
desired[dep]="${arg##*=}"
|
|
;;
|
|
"--help")
|
|
printf "${GREEN}$0${NC}\n"
|
|
printf " available options:\n"
|
|
printf " --with-dep=${BLUE}<path_to_dep_binary>${NC}\n"
|
|
printf " --with-go=${BLUE}<path_to_go_binary>${NC}\n"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $arg"
|
|
exit 2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
vercomp () {
|
|
if [[ $1 == $2 ]]
|
|
then
|
|
return 0
|
|
fi
|
|
local IFS=.
|
|
local i ver1=($1) ver2=($2)
|
|
# fill empty fields in ver1 with zeros
|
|
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
|
|
do
|
|
ver1[i]=0
|
|
done
|
|
for ((i=0; i<${#ver1[@]}; i++))
|
|
do
|
|
if [[ -z ${ver2[i]} ]]
|
|
then
|
|
# fill empty fields in ver2 with zeros
|
|
ver2[i]=0
|
|
fi
|
|
if ((10#${ver1[i]} > 10#${ver2[i]}))
|
|
then
|
|
return 1
|
|
fi
|
|
if ((10#${ver1[i]} < 10#${ver2[i]}))
|
|
then
|
|
return 2
|
|
fi
|
|
done
|
|
return 0
|
|
}
|
|
|
|
check_for() {
|
|
echo -n "Checking for $1... "
|
|
if ! [ -z "${desired[$1]}" ]; then
|
|
TOOL_PATH="${desired[$1]}"
|
|
else
|
|
TOOL_PATH=$(command -v $1)
|
|
fi
|
|
if ! [ -x "$TOOL_PATH" -a -f "$TOOL_PATH" ]; then
|
|
printf "${RED}not found${NC}\n"
|
|
cd -
|
|
exit 1
|
|
else
|
|
printf "${GREEN}found${NC}\n"
|
|
tools[$1]=$TOOL_PATH
|
|
fi
|
|
}
|
|
|
|
check_go_version() {
|
|
echo -n "Checking go version... "
|
|
GO_VERSION=$(${tools[go]} version | ${tools[awk]} '{where = match($0, /[0-9]\.[0-9]+\.[0-9]*/); if (where != 0) print substr($0, RSTART, RLENGTH)}')
|
|
vercomp $GO_VERSION 1.12
|
|
case $? in
|
|
0) ;&
|
|
1)
|
|
printf "${GREEN}"
|
|
echo $GO_VERSION
|
|
printf "${NC}"
|
|
;;
|
|
2)
|
|
printf "${RED}"
|
|
echo "$GO_VERSION < 1.12"
|
|
exit 1
|
|
;;
|
|
esac
|
|
VERSION=$(${tools[go]} version | ${tools[awk]} '{print $3}')
|
|
tools["go_version"]="${VERSION}"
|
|
}
|
|
|
|
check_docker_version() {
|
|
echo -n "Checking docker version... "
|
|
DOCKER_VERSION=$(${tools[docker]} version | ${tools[awk]})
|
|
}
|
|
|
|
check_go_env() {
|
|
echo -n "Checking \$GOPATH... "
|
|
GOPATH="$(go env GOPATH)"
|
|
if [ -z "$GOPATH" ]; then
|
|
printf "${RED}invalid${NC} - GOPATH not set\n"
|
|
exit 1
|
|
fi
|
|
printf "${GREEN}valid${NC} - $GOPATH\n"
|
|
}
|
|
|
|
cd ${0%/*}
|
|
|
|
rm -fv .env
|
|
|
|
check_for make
|
|
check_for awk
|
|
check_for go
|
|
check_go_version
|
|
check_go_env
|
|
check_for dep
|
|
check_for golangci-lint
|
|
|
|
echo
|
|
|
|
cat <<- EOF > .env
|
|
MAKE := "${tools[make]}"
|
|
GO := "${tools[go]}"
|
|
GO_VERSION := ${tools[go_version]}
|
|
DEP := "${tools[dep]}"
|
|
GOLANGCILINT := "${tools[golangci-lint]}"
|
|
EOF
|
|
|
|
echo "Environment configuration written to .env"
|
|
|
|
cd - > /dev/null
|