#!/usr/bin/env bash set -eu version=0.6.6 arch="$(uname -m)" tarball="uv-$arch-unknown-linux-gnu.tar.gz" declare -A sha256=( [aarch64]=37a543598cdb7d8fc9b74e6b1fe1fdf8b9a279c6137c7ff8396a88f69ec7a43c [x86_64]=4c3426c4919d9f44633ab9884827fa1ad64ad8d993516d636eb955a3835c4a8c ) check_version() { out="$(uv --version)" && [ "$out" = "uv $version" ] } if ! check_version 2>/dev/null; then set -x tmpdir="$(mktemp -d)" trap 'rm -r "$tmpdir"' EXIT cd "$tmpdir" curl -fLO --retry 3 "https://github.com/astral-sh/uv/releases/download/$version/$tarball" sha256sum -c <<<"${sha256[$arch]} $tarball" tar -xzf "$tarball" --no-same-owner --strip-components=1 -C /usr/local/bin "uv-$arch-unknown-linux-gnu"/{uv,uvx} check_version fi