43 lines
1.2 KiB
Bash
43 lines
1.2 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
HOST="https://git.briannelson.dev" # your Gitea URL, no trailing slash
|
|
REPO="brian/rusty-pw"
|
|
BIN="rusty-pw"
|
|
DIR="$HOME/.local/bin"
|
|
|
|
# Only Apple Silicon Macs are supported for now. Fail clearly otherwise.
|
|
if [ "$(uname -s)" != "Darwin" ] || [ "$(uname -m)" != "arm64" ]; then
|
|
echo "This installer only supports macOS on Apple Silicon." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Ask Gitea for the newest release tag.
|
|
tag=$(curl -fsSL "$HOST/api/v1/repos/$REPO/releases/latest" \
|
|
| sed -n 's/.*"tag_name": *"\([^"]*\)".*/\1/p' | head -n 1)
|
|
|
|
if [ -z "$tag" ]; then
|
|
echo "Could not find a release for $REPO" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Download and install. curl downloads aren't quarantined, so no Gatekeeper prompt.
|
|
mkdir -p "$DIR"
|
|
echo "Downloading $BIN $tag..."
|
|
curl -fsSL "$HOST/$REPO/releases/download/$tag/$BIN-macos-arm64" -o "$DIR/$BIN"
|
|
chmod +x "$DIR/$BIN"
|
|
|
|
# Put the install folder on PATH for future terminals (zsh is the macOS default).
|
|
case ":$PATH:" in
|
|
*":$DIR:"*) ;;
|
|
*)
|
|
rc="$HOME/.zshrc"
|
|
line='export PATH="$HOME/.local/bin:$PATH"'
|
|
if ! grep -qsF "$line" "$rc"; then
|
|
echo "$line" >> "$rc"
|
|
fi
|
|
echo "Added $DIR to PATH in $rc. Open a new terminal window to use it."
|
|
;;
|
|
esac
|
|
|
|
echo "Installed $BIN $tag. Run: $BIN" |