packer-cn/scripts/devcompile.sh

68 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
#
# This script only builds the application from source.
set -e
NO_COLOR="\x1b[0m"
OK_COLOR="\x1b[32;01m"
ERROR_COLOR="\x1b[31;01m"
WARN_COLOR="\x1b[33;01m"
# http://stackoverflow.com/questions/4023830/bash-how-compare-two-strings-in-version-format
verify_go () {
if [[ $1 == $2 ]]; then
return 0
fi
if [[ "$2" == "devel" ]]; then
return 0
fi
local IFS=.
local i ver1=($1) ver2=($2)
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do
ver1[i]=0
done
for ((i=0; i<${#ver1[@]}; i++)); do
if [[ -z ${ver2[i]} ]]; then
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]})); then
echo -e "${ERROR_COLOR}==> Required Go version $1 not installed. Found $2 instead"
exit 1
fi
done
}
GO_MINIMUM_VERSION=1.2
GO_INSTALLED_VERSION=$(go version | cut -d ' ' -f 3)
GO_INSTALLED_VERSION=${GO_INSTALLED_VERSION#"go"}
echo -e "${OK_COLOR}==> Verifying Go"
verify_go $GO_MINIMUM_VERSION $GO_INSTALLED_VERSION
# Get the parent directory of where this script is.
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )"
# Change into that directory
cd $DIR
# Compile the thing
export XC_ARCH=$(go env GOARCH)
export XC_OS=$(go env GOOS)
./scripts/compile.sh
# Move all the compiled things to the PATH
case $(uname) in
CYGWIN*)
GOPATH="$(cygpath $GOPATH)"
;;
esac
IFS=: MAIN_GOPATH=( $GOPATH )
cp pkg/${XC_OS}_${XC_ARCH}/* ${MAIN_GOPATH}/bin
cp pkg/${XC_OS}_${XC_ARCH}/* ./bin