#!/bin/sh -e

# set some environment variables
ORG_PATH="github.com/coreos"
REPO_PATH="${ORG_PATH}/etcd"

GIT_SHA=$(git rev-parse --short HEAD || echo "GitNotFound")
if [ ! -z "$FAILPOINTS" ]; then
	GIT_SHA="$GIT_SHA"-FAILPOINTS
fi

# Set GO_LDFLAGS="-s" for building without symbols for debugging.
GO_LDFLAGS="$GO_LDFLAGS -X ${REPO_PATH}/cmd/vendor/${REPO_PATH}/version.GitSHA=${GIT_SHA}"

# enable/disable failpoints
toggle_failpoints() {
	mode="$1"
	if which gofail >/dev/null 2>&1; then
		gofail "$mode" etcdserver/ mvcc/backend/
	elif [ "$mode" != "disable" ]; then
		echo "FAILPOINTS set but gofail not found"
		exit 1
	fi
}

toggle_failpoints_default() {
	mode="disable"
	if [ ! -z "$FAILPOINTS" ]; then mode="enable"; fi
	toggle_failpoints "$mode"
}

etcd_build() {
	out="bin"
	if [ -n "${BINDIR}" ]; then out="${BINDIR}"; fi
	toggle_failpoints_default
	# Static compilation is useful when etcd is run in a container. $GO_BUILD_FLAGS is OK

	# shellcheck disable=SC2086
	CGO_ENABLED=0 go build $GO_BUILD_FLAGS -installsuffix cgo -ldflags "$GO_LDFLAGS" -o "${out}/etcd" ${REPO_PATH}/cmd/etcd || return
	# shellcheck disable=SC2086
	CGO_ENABLED=0 go build $GO_BUILD_FLAGS -installsuffix cgo -ldflags "$GO_LDFLAGS" -o "${out}/etcdctl" ${REPO_PATH}/cmd/etcdctl || return
}

etcd_setup_gopath() {
	d=$(dirname "$0")
	CDIR=$(cd "$d" && pwd)
	cd "$CDIR"
	etcdGOPATH="${CDIR}/gopath"
	# preserve old gopath to support building with unvendored tooling deps (e.g., gofail)
	if [ -n "$GOPATH" ]; then
		GOPATH=":$GOPATH"
	fi
	export GOPATH=${etcdGOPATH}$GOPATH
	rm -rf "${etcdGOPATH}/src"
	mkdir -p "${etcdGOPATH}"
	ln -s "${CDIR}/cmd/vendor" "${etcdGOPATH}/src"
}

toggle_failpoints_default

# only build when called directly, not sourced
if echo "$0" | grep "build$" >/dev/null; then
	# force new gopath so builds outside of gopath work
	etcd_setup_gopath
	etcd_build
fi
