#!/usr/bin/env bash # refresh-fork-upstream-map.sh — Update local/fork-upstream-map.toml # with the current upstream URLs and latest release tags for each # Cat 2 fork. This is the canonical source of truth for # verify-fork-versions.sh. set -euo pipefail ROOT="$(cd "$(dirname "$0")/../.." && pwd)" cd "$ROOT" MAP="$ROOT/local/fork-upstream-map.toml" # fork_name upstream_url latest_tag declare -A FORKS=( [syscall]="https://gitlab.redox-os.org/redox-os/syscall.git" [libredox]="https://gitlab.redox-os.org/redox-os/libredox.git" [redoxfs]="https://gitlab.redox-os.org/redox-os/redoxfs.git" [redox-scheme]="https://gitlab.redox-os.org/redox-os/redox-scheme.git" [relibc]="https://gitlab.redox-os.org/redox-os/relibc.git" [kernel]="https://gitlab.redox-os.org/redox-os/kernel.git" [bootloader]="https://gitlab.redox-os.org/redox-os/bootloader.git" [installer]="https://gitlab.redox-os.org/redox-os/installer.git" [userutils]="https://gitlab.redox-os.org/redox-os/userutils.git" ) { echo "# fork-upstream-map.toml — Auto-generated by" echo "# local/scripts/refresh-fork-upstream-map.sh. Do not edit by hand." echo "# Format: " echo "" for fork in syscall libredox redoxfs redox-scheme relibc kernel bootloader installer userutils; do url="${FORKS[$fork]:-}" if [ -z "$url" ]; then echo "WARN: no upstream URL for $fork, skipping" >&2 continue fi # Get latest tag matching the project's version scheme # (e.g. 0.9.0, 0.1.18, 0.5.12, 1.0.0). Exclude pre-release and # non-stable tags. latest=$(cd /tmp && git ls-remote --tags --sort=-v:refname "$url" 2>/dev/null \ | awk '{print $2}' \ | sed 's|refs/tags/||' \ | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' \ | head -1) if [ -z "$latest" ]; then echo "WARN: couldn't determine latest tag for $fork from $url" >&2 continue fi printf "%-13s %-55s %s\n" "$fork" "$url" "$latest" done } > "$MAP" echo "Updated $MAP" cat "$MAP"