provisioning-catalog/components/jj/taskserv/install-jj.sh

42 lines
1.2 KiB
Bash
Raw Normal View History

#!/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 ==="