update-debian.sh (2156B) - Raw
1 #!/usr/bin/env bash 2 set -euo pipefail 3 4 # Script to generate updated Debian Live package definition 5 # Usage: ./update-debian.sh <flavor> 6 # flavor: standard, xfce, kde, gnome, etc. 7 8 SHA256SUMS_URL="https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/SHA256SUMS" 9 10 if [[ $# -ne 1 ]]; then 11 echo "Usage: $0 <flavor>" >&2 12 echo " flavor: standard, xfce, kde, gnome, etc." >&2 13 exit 1 14 fi 15 16 FLAVOR="$1" 17 18 # Download SHA256SUMS file 19 SHA256SUMS_CONTENT=$(curl -s "$SHA256SUMS_URL") 20 21 if [[ -z "$SHA256SUMS_CONTENT" ]]; then 22 echo "Error: Could not download SHA256SUMS file" >&2 23 exit 1 24 fi 25 26 # Extract version from any filename in SHA256SUMS 27 VERSION=$(echo "$SHA256SUMS_CONTENT" | \ 28 grep -oP 'debian-live-\K[\d.]+(?=-amd64-\w+\.iso)' | \ 29 head -n1) 30 31 if [[ -z "$VERSION" ]]; then 32 echo "Error: Could not determine Debian version from SHA256SUMS" >&2 33 exit 1 34 fi 35 36 # Extract hash from SHA256SUMS for this flavor 37 ISO_FILENAME="debian-live-${VERSION}-amd64-${FLAVOR}.iso" 38 HASH_HEX=$(echo "$SHA256SUMS_CONTENT" | \ 39 grep " ${ISO_FILENAME}$" | \ 40 awk '{print $1}') 41 42 if [[ -z "$HASH_HEX" ]]; then 43 echo "Error: Could not find hash for $ISO_FILENAME in SHA256SUMS" >&2 44 echo "" >&2 45 echo "Available ISOs:" >&2 46 echo "$SHA256SUMS_CONTENT" | grep '\.iso$' | sed 's/^/ /' >&2 47 exit 1 48 fi 49 50 # Convert hex hash to SRI format 51 HASH_SRI=$(nix-hash --type sha256 --to-sri "$HASH_HEX") 52 53 # Output the Nix code block 54 cat <<EOF 55 mrescue-debian-${FLAVOR} = mkDebianLive { 56 flavor = "${FLAVOR}"; 57 version = "${VERSION}"; 58 hash = "${HASH_SRI}"; 59 }; 60 EOF 61 62 echo "" 63 echo "Checking mirror availability..." >&2 64 MIRROR_URL="https://dl.jakstys.lt/boot/debian-live-${VERSION}-amd64-${FLAVOR}.iso" 65 if curl -sI "$MIRROR_URL" | head -1 | grep -q "200"; then 66 echo "✓ File available on mirror" >&2 67 else 68 echo "⚠ Warning: File not found on mirror!" >&2 69 echo "" 70 echo "To upload to mirror, run:" >&2 71 echo " ssh fwminex sh -c 'cd /var/www/dl/boot && wget https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-${VERSION}-amd64-${FLAVOR}.iso'" >&2 72 echo "" 73 fi