#!/usr/bin/env bash # # Purge BunnyCDN edge cache for the index files of one ARCH+OS_ID # combination across one or more domains. # # Usage: # purge_cdn_cache.sh [...] # set -euo pipefail if (( $# < 4 )); then echo "usage: $0 [...]" >&2 exit 2 fi api_key="$1" arch="$2" os_id="$3" shift 3 resources=( "src/contrib/PACKAGES" "src/contrib/PACKAGES.gz" "src/contrib/PACKAGES.rds" "src/contrib/PACKAGES.db" "src/contrib/Meta/archive.rds" ) purge_one() { local target="$1" # --data-urlencode encodes value of `url=` for us; -G forces GET. curl -sS -G -X POST \ -H "AccessKey: ${api_key}" \ --data-urlencode "url=${target}" \ --data "async=false" \ "https://api.bunny.net/purge" echo } for domain in "$@"; do for resource in "${resources[@]}"; do purge_one "https://${domain}/${arch}/${os_id}/latest/${resource}" done done