#!/usr/bin/env bash ### Bash Environment Setup # http://redsymbol.net/articles/unofficial-bash-strict-mode/ # https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html set -o errexit set -o errtrace set -o nounset set -o pipefail IFS=$'\n' REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" cd "$REPO_DIR" ABXPKG_LIB_DIR="${ABXPKG_LIB_DIR:-${LIB_DIR:-$HOME/.config/archivebox/lib}}" locked_abxpkg_version() { local line package="" while IFS= read -r line; do case "$line" in '[[package]]') package="" ;; 'name = "abxpkg"') package="abxpkg" ;; 'version = "'*'"') [[ "$package" == "abxpkg" ]] || continue line="${line#version = \"}" printf '%s\n' "${line%\"}" return 0 ;; esac done < "$REPO_DIR/uv.lock" return 1 } ABXPKG_VERSION="$(locked_abxpkg_version)" mkdir -p "$ABXPKG_LIB_DIR/env/bin" uv run --no-cache --no-project --with "abxpkg==$ABXPKG_VERSION" abxpkg env \ --install \ --lib="$ABXPKG_LIB_DIR" \ --deps-from="$REPO_DIR/.github/configs/ci-tooling.json:git_binaries" \ >/dev/null GIT_BINARY="$ABXPKG_LIB_DIR/env/bin/git" test -x "$GIT_BINARY" if [[ "$("$GIT_BINARY" branch --show-current)" != "dev" ]]; then echo "[X] Run this from the dev branch." >&2 exit 1 fi if [[ -n "$("$GIT_BINARY" status --porcelain)" ]]; then echo "[X] Refusing to update a dirty worktree." >&2 "$GIT_BINARY" status --short >&2 exit 1 fi "$GIT_BINARY" pull --ff-only