set -eu
REPO="pulp-platform/bender"
PAGES_URL="https://${REPO%%/*}.github.io/${REPO##*/}"
CARGO_DIST_MIN_MINOR=32
LOCAL=0
GLOBAL=0
VERSION=latest
for arg in "$@"; do
case "$arg" in
--local) LOCAL=1 ;;
--global) GLOBAL=1 ;;
*) VERSION="$arg" ;;
esac
done
if [ "$LOCAL" -eq 1 ] && [ "$GLOBAL" -eq 1 ]; then
echo "init: --local and --global are mutually exclusive" >&2
exit 1
fi
uses_cargo_dist() {
[ "$VERSION" = "latest" ] && return 0
major=$(printf '%s' "$VERSION" | cut -d. -f1)
[ "$major" -ge 1 ] && return 0
minor=$(printf '%s' "$VERSION" | cut -d. -f2)
[ "$minor" -ge "$CARGO_DIST_MIN_MINOR" ]
}
if uses_cargo_dist; then
if [ "$VERSION" = "latest" ]; then
URL="https://github.com/$REPO/releases/latest/download/bender-installer.sh"
else
URL="https://github.com/$REPO/releases/download/v$VERSION/bender-installer.sh"
fi
if [ "$LOCAL" -eq 1 ]; then
_tmpdir=$(mktemp -d)
trap 'rm -rf "$_tmpdir"' EXIT
curl --proto '=https' --tlsv1.2 -LsSf "$URL" | \
CARGO_DIST_FORCE_INSTALL_DIR="$_tmpdir" INSTALLER_NO_MODIFY_PATH=1 sh
mv "$_tmpdir/bin/bender" .
else
curl --proto '=https' --tlsv1.2 -LsSf "$URL" | sh
fi
elif [ "$GLOBAL" -eq 1 ]; then
_dest="${CARGO_HOME:-$HOME/.cargo}/bin"
mkdir -p "$_dest"
_tmpdir=$(mktemp -d)
trap 'rm -rf "$_tmpdir"' EXIT
( cd "$_tmpdir" && curl --proto '=https' --tlsv1.2 -LsSf \
"$PAGES_URL/init-legacy" | sh -s -- "$VERSION" )
mv "$_tmpdir/bender" "$_dest/"
echo "Installed bender to $_dest/bender"
case ":${PATH:-}:" in
*":$_dest:"*) ;;
*) echo "Note: '$_dest' is not on PATH; add it to use 'bender' from anywhere." >&2 ;;
esac
else
curl --proto '=https' --tlsv1.2 -LsSf \
"$PAGES_URL/init-legacy" | sh -s -- "$VERSION"
fi