record.sh

1.6 KB · raw

1#!/bin/sh2# Records Kepr 2's §22.4 compatibility routes from kepr.uk, GET only, into this folder:3# <slug>.headers (status line plus the headers the contract tests read) and <slug>.body.4# Downloads are recorded without their body (`--max-filesize 1` stops before the file).5# Re-run before cutover (§28) and review the diff.6set -eu7out=$(cd "$(dirname "$0")" && pwd)8raw=$(mktemp)9rec() { # path [nobody]10  slug=$(printf '%s' "$1" | sed 's#^/##; s#/#_#g')11  if [ "${2:-}" = nobody ]; then12    curl -s -D "$raw" -o /dev/null --max-filesize 1 "https://kepr.uk$1" || true13  else14    curl -s -D "$raw" -o "$out/$slug.body" "https://kepr.uk$1"15  fi16  { head -1 "$raw" | tr -d '\r'; grep -i -E '^(content-type|access-control-allow-origin|location|cache-control|content-disposition):' "$raw" | tr -d '\r' || true; } > "$out/$slug.headers"17  echo "$1 -> $(head -1 "$out/$slug.headers")"18}19for r in haven kepr koh nina peach-android; do20  rec /api/$r/releases/latest21  rec /api/$r/releases/history22  rec /$r/update-info23  rec /$r/meta24  rec /$r/releases/latest25  rec /$r/releases/latest/version.txt26  v=$(cat "$out/${r}_releases_latest_version.txt.body")27  rec /$r/releases/$v/checksums.txt28  p=$(sed 's/.*"platforms":{"\([^"]*\)".*/\1/' "$out/api_${r}_releases_latest.body")29  rec /$r/releases/$v/$p nobody30  rec /$r/releases/$v/$r-$p nobody31done32rec /api/koh/releases/latest33for p in linux-x86_64 macos-aarch64; do rec /api/koh/releases/2.1.0/$p nobody; done34rec /api/koh/releases/2.1.16/linux-x86_6435rec /api/peach-relay/releases/latest36rec /api/peach-relay/releases/history37rec /peach-relay/meta38rec /peach-relay/update-info39rec /api/nowhere/releases/latest