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