42 lines
1.2 KiB
Bash
42 lines
1.2 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
[ -r "./env-jj" ] && . ./env-jj
|
||
|
|
|
||
|
|
JJ_VERSION="${JJ_VERSION:-0.41.0}"
|
||
|
|
JJ_INSTALL_DIR="${JJ_INSTALL_DIR:-/usr/local/bin}"
|
||
|
|
|
||
|
|
ARCH="$(uname -m)"
|
||
|
|
case "${ARCH}" in
|
||
|
|
x86_64) ARCH_TAG="x86_64-unknown-linux-musl" ;;
|
||
|
|
aarch64) ARCH_TAG="aarch64-unknown-linux-musl" ;;
|
||
|
|
*) echo "Unsupported architecture: ${ARCH}" >&2; exit 1 ;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
JJ_TARBALL="jj-v${JJ_VERSION}-${ARCH_TAG}.tar.gz"
|
||
|
|
JJ_URL="https://github.com/jj-vcs/jj/releases/download/v${JJ_VERSION}/${JJ_TARBALL}"
|
||
|
|
|
||
|
|
echo "=== jj: checking prerequisites (version=${JJ_VERSION}, arch=${ARCH_TAG}) ==="
|
||
|
|
|
||
|
|
if jj --version 2>/dev/null | grep -qF "${JJ_VERSION}"; then
|
||
|
|
echo "=== jj: v${JJ_VERSION} already installed — skipping ==="
|
||
|
|
exit 0
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "=== jj: downloading ${JJ_URL} ==="
|
||
|
|
TMPDIR="$(mktemp -d)"
|
||
|
|
trap 'rm -rf "${TMPDIR}"' EXIT
|
||
|
|
|
||
|
|
curl -fsSL "${JJ_URL}" | tar -xz -C "${TMPDIR}"
|
||
|
|
|
||
|
|
EXTRACTED_BIN="${TMPDIR}/jj-v${JJ_VERSION}-${ARCH_TAG}/jj"
|
||
|
|
if [ ! -f "${EXTRACTED_BIN}" ]; then
|
||
|
|
# Some releases ship the binary directly at the archive root
|
||
|
|
EXTRACTED_BIN="${TMPDIR}/jj"
|
||
|
|
fi
|
||
|
|
|
||
|
|
chmod +x "${EXTRACTED_BIN}"
|
||
|
|
sudo install -m 0755 "${EXTRACTED_BIN}" "${JJ_INSTALL_DIR}/jj"
|
||
|
|
|
||
|
|
echo "=== jj: installed $(jj --version) at ${JJ_INSTALL_DIR}/jj ==="
|