blob: 3b9c9dd80534bd0e13287137a1cfa40273117e86 [file]
#!/usr/bin/env bash
#
# This script is used to coerce certain commands which rely on the presence of
# a go.mod into working with our repository. It works by creating a fake
# go.mod, running a specified command (passed via arguments), and removing it
# when the command is finished. This script should be dropped when this
# repository is a proper Go module with a permanent go.mod.
set -euo pipefail
SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOTDIR="$(cd "${SCRIPTDIR}/.." && pwd)"
cleanup_paths=()
create_symlink() {
local target="$1"
local link="$2"
if [ -e "$link" ]; then
# see https://superuser.com/a/196698
if ! [ "$link" -ef "${ROOTDIR}/${target}" ]; then
echo "$(basename "$0"): WARN: $link exists but is not the expected symlink!" >&2
echo "$(basename "$0"): WARN: Using your version instead of our generated version -- this may misbehave!" >&2
fi
return
fi
set -x
ln -s "$target" "$link"
cleanup_paths+=( "$link" )
}
create_symlink "vendor.mod" "${ROOTDIR}/go.mod"
create_symlink "vendor.sum" "${ROOTDIR}/go.sum"
if [ "${#cleanup_paths[@]}" -gt 0 ]; then
trap 'rm -f "${cleanup_paths[@]}"' EXIT
fi
GO111MODULE=on GOTOOLCHAIN=local "$@"