1c16c2c055
If the GOPATH enviroment variable was not set, go uses the default GOPATH (~/go/). The configure script was only checking if the GOPATH environment is set. If it wasn't the script was failing. Instead of checking if the GOPATH environment variable is set, check if "go env GOPATH" returns a non-emtpy string.
142 lines
2.7 KiB
Bash
Executable File
142 lines
2.7 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.10
|
|
case $? in
|
|
0) ;&
|
|
1)
|
|
printf "${GREEN}"
|
|
echo $GO_VERSION
|
|
printf "${NC}"
|
|
;;
|
|
2)
|
|
printf "${RED}"
|
|
echo "$GO_VERSION < 1.10"
|
|
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%/*}
|
|
|
|
if [ ! -f .env ]; then
|
|
rm .env
|
|
fi
|
|
|
|
check_for make
|
|
check_for awk
|
|
check_for go
|
|
check_go_version
|
|
check_go_env
|
|
check_for dep
|
|
|
|
echo
|
|
|
|
cat <<- EOF > .env
|
|
MAKE := "${tools[make]}"
|
|
GO := "${tools[go]}"
|
|
GO_VERSION := ${tools[go_version]}
|
|
DEP := "${tools[dep]}"
|
|
EOF
|
|
|
|
echo "Environment configuration written to .env"
|
|
|
|
cd - > /dev/null
|