All checks were successful
Update Nix Packages with nix-update / nix-update (push) Successful in 40m47s
64 lines
2.2 KiB
Bash
Executable File
64 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env nix-shell
|
|
#!nix-shell --pure -i bash -p bash curl jq nix cacert git
|
|
set -euo pipefail
|
|
|
|
# Update openshell sources.json with the latest release from GitHub.
|
|
# Usage: ./update.sh (or via nix-update --update-script)
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SOURCES_FILE="$SCRIPT_DIR/sources.json"
|
|
|
|
# Map Nix system -> GitHub release asset name
|
|
declare -A SYSTEMS=(
|
|
["x86_64-linux"]="openshell-x86_64-unknown-linux-musl.tar.gz"
|
|
["aarch64-linux"]="openshell-aarch64-unknown-linux-musl.tar.gz"
|
|
["aarch64-darwin"]="openshell-aarch64-apple-darwin.tar.gz"
|
|
)
|
|
|
|
echo "Fetching latest openshell release..."
|
|
LATEST=$(curl -fsSL "https://api.github.com/repos/NVIDIA/OpenShell/releases/latest")
|
|
VERSION=$(echo "$LATEST" | jq -r '.tag_name')
|
|
echo "Latest version: $VERSION"
|
|
|
|
CURRENT_VERSION=$(jq -r '.version' "$SOURCES_FILE")
|
|
if [[ "$VERSION" == "$CURRENT_VERSION" ]]; then
|
|
echo "Already at latest version $VERSION, nothing to do."
|
|
exit 0
|
|
fi
|
|
|
|
NEW_SOURCES="{}"
|
|
|
|
for NIX_SYSTEM in "${!SYSTEMS[@]}"; do
|
|
ASSET_NAME="${SYSTEMS[$NIX_SYSTEM]}"
|
|
URL="https://github.com/NVIDIA/OpenShell/releases/download/${VERSION}/${ASSET_NAME}"
|
|
|
|
echo "Fetching hash for $NIX_SYSTEM ($URL)..."
|
|
HASH=$(nix-prefetch-url --type sha256 "$URL" 2>/dev/null)
|
|
SRI=$(nix hash to-sri --type sha256 "$HASH")
|
|
|
|
NEW_SOURCES=$(echo "$NEW_SOURCES" | jq \
|
|
--arg sys "$NIX_SYSTEM" \
|
|
--arg url "$URL" \
|
|
--arg hash "$SRI" \
|
|
'. + {($sys): {url: $url, hash: $hash}}')
|
|
done
|
|
|
|
jq -n \
|
|
--arg version "$VERSION" \
|
|
--argjson sources "$NEW_SOURCES" \
|
|
'{"version": $version, "sources": $sources}' \
|
|
> "$SOURCES_FILE"
|
|
|
|
echo "Updated $SOURCES_FILE to $VERSION"
|
|
|
|
# Commit when running in CI or via nix-update
|
|
if [[ -d "$SCRIPT_DIR/../../.git" ]] || git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
NIXPKGS_ROOT=$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || true)
|
|
if [[ -n "$NIXPKGS_ROOT" && -n "$(git -C "$NIXPKGS_ROOT" status --porcelain "$SOURCES_FILE")" ]]; then
|
|
CLEAN_VERSION="${VERSION#v}"
|
|
git -C "$NIXPKGS_ROOT" add "$SOURCES_FILE"
|
|
git -C "$NIXPKGS_ROOT" commit -m "openshell: ${CURRENT_VERSION#v} -> ${CLEAN_VERSION}"
|
|
echo "Committed update to git"
|
|
fi
|
|
fi
|