47 lines
2.1 KiB
Bash
47 lines
2.1 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
#
|
||
|
|
# Regenerate every committed lockfile in the workspace:
|
||
|
|
# - Rust: Cargo.lock, fuzz/Cargo.lock (cargo update)
|
||
|
|
# - Node: bindings/node/package-lock.json (npm install --package-lock-only)
|
||
|
|
# - Python: .github/requirements/*.txt (uv pip compile --generate-hashes)
|
||
|
|
#
|
||
|
|
# Run from anywhere; the script cd's to the repo root itself:
|
||
|
|
#
|
||
|
|
# ./scripts/update-lockfiles.sh
|
||
|
|
#
|
||
|
|
# The Python locks are hash-pinned (OpenSSF Scorecard PinnedDependencies) and
|
||
|
|
# generated with uv rather than pip-tools because uv can resolve a *target*
|
||
|
|
# Python version's full transitive closure — with hashes — without that
|
||
|
|
# interpreter being installed locally. That is required for the numpy cp39/cp313
|
||
|
|
# split: numpy ships no single release with wheels for both, so ci-dev is locked
|
||
|
|
# twice (Python 3.9 and Python 3.10+). If uv is not on PATH the script
|
||
|
|
# bootstraps a local copy (Linux/macOS); on Windows install uv first
|
||
|
|
# (https://docs.astral.sh/uv/getting-started/installation/).
|
||
|
|
#
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||
|
|
cd "$repo_root"
|
||
|
|
|
||
|
|
echo "==> Rust (Cargo.lock, fuzz/Cargo.lock)"
|
||
|
|
cargo update
|
||
|
|
(cd fuzz && cargo update)
|
||
|
|
|
||
|
|
echo "==> Node (bindings/node/package-lock.json)"
|
||
|
|
(cd bindings/node && npm install --package-lock-only --no-audit --no-fund)
|
||
|
|
|
||
|
|
echo "==> Python (.github/requirements/*.txt via uv)"
|
||
|
|
if ! command -v uv >/dev/null 2>&1; then
|
||
|
|
echo " uv not found on PATH; bootstrapping a local copy..."
|
||
|
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||
|
|
export PATH="$HOME/.local/bin:$PATH"
|
||
|
|
fi
|
||
|
|
|
||
|
|
req=".github/requirements"
|
||
|
|
cc="./scripts/update-lockfiles.sh"
|
||
|
|
uv pip compile --quiet --python-version 3.9 --generate-hashes --custom-compile-command "$cc" "$req/ci-dev-py39.in" -o "$req/ci-dev-py39.txt"
|
||
|
|
uv pip compile --quiet --python-version 3.11 --generate-hashes --custom-compile-command "$cc" "$req/ci-dev-py3.in" -o "$req/ci-dev-py3.txt"
|
||
|
|
uv pip compile --quiet --python-version 3.11 --generate-hashes --custom-compile-command "$cc" "$req/bench.in" -o "$req/bench.txt"
|
||
|
|
|
||
|
|
echo "==> Done. Review 'git diff' before committing."
|