2019-01-04 10:58:30 +00:00
|
|
|
#!/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)}')
|
2019-04-12 10:15:29 +00:00
|
|
|
vercomp $GO_VERSION 1.11
|
2019-01-04 10:58:30 +00:00
|
|
|
case $? in
|
|
|
|
0) ;&
|
|
|
|
1)
|
|
|
|
printf "${GREEN}"
|
|
|
|
echo $GO_VERSION
|
|
|
|
printf "${NC}"
|
|
|
|
;;
|
|
|
|
2)
|
|
|
|
printf "${RED}"
|
2019-04-12 10:15:29 +00:00
|
|
|
echo "$GO_VERSION < 1.11"
|
2019-01-04 10:58:30 +00:00
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
2019-01-14 10:39:21 +00:00
|
|
|
VERSION=$(${tools[go]} version | ${tools[awk]} '{print $3}')
|
|
|
|
tools["go_version"]="${VERSION}"
|
2019-01-04 10:58:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
check_docker_version() {
|
|
|
|
echo -n "Checking docker version... "
|
|
|
|
DOCKER_VERSION=$(${tools[docker]} version | ${tools[awk]})
|
|
|
|
}
|
|
|
|
|
|
|
|
check_go_env() {
|
|
|
|
echo -n "Checking \$GOPATH... "
|
2019-02-25 09:37:05 +00:00
|
|
|
GOPATH="$(go env GOPATH)"
|
2019-01-04 10:58:30 +00:00
|
|
|
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
|
2019-06-03 07:25:48 +00:00
|
|
|
check_for gometalinter
|
2019-01-04 10:58:30 +00:00
|
|
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
cat <<- EOF > .env
|
|
|
|
MAKE := "${tools[make]}"
|
|
|
|
GO := "${tools[go]}"
|
2019-01-14 10:39:21 +00:00
|
|
|
GO_VERSION := ${tools[go_version]}
|
2019-01-04 10:58:30 +00:00
|
|
|
DEP := "${tools[dep]}"
|
2019-06-03 07:25:48 +00:00
|
|
|
GOMETALINTER := "${tools[gometalinter]}"
|
2019-01-04 10:58:30 +00:00
|
|
|
EOF
|
|
|
|
|
|
|
|
echo "Environment configuration written to .env"
|
|
|
|
|
|
|
|
cd - > /dev/null
|