58 lines · 1.8 KB · Shell
RawDownload
#!/usr/bin/env bashset -euo pipefail ROOT=$(cd "$(dirname "$0")/.." && pwd)ZIP=${1:?"Usage: $0 CodexBar-<ver>.zip"}FEED_URL=${2:-"https://raw.githubusercontent.com/steipete/CodexBar/main/appcast.xml"}PRIVATE_KEY_FILE=${SPARKLE_PRIVATE_KEY_FILE:-}if [[ -z "$PRIVATE_KEY_FILE" ]]; then  echo "Set SPARKLE_PRIVATE_KEY_FILE to your ed25519 private key (Sparkle)." >&2  exit 1fiif [[ ! -f "$ZIP" ]]; then  echo "Zip not found: $ZIP" >&2  exit 1fi ZIP_DIR=$(cd "$(dirname "$ZIP")" && pwd)ZIP_NAME=$(basename "$ZIP")ZIP_BASE="${ZIP_NAME%.zip}"VERSION=${SPARKLE_RELEASE_VERSION:-}if [[ -z "$VERSION" ]]; then  if [[ "$ZIP_NAME" =~ ^CodexBar-([0-9]+(\.[0-9]+){1,2}([-.][^.]*)?)\.zip$ ]]; then    VERSION="${BASH_REMATCH[1]}"  else    echo "Could not infer version from $ZIP_NAME; set SPARKLE_RELEASE_VERSION." >&2    exit 1  fifi NOTES_HTML="${ZIP_DIR}/${ZIP_BASE}.html"KEEP_NOTES=${KEEP_SPARKLE_NOTES:-0}if [[ -x "$ROOT/Scripts/changelog-to-html.sh" ]]; then  "$ROOT/Scripts/changelog-to-html.sh" "$VERSION" >"$NOTES_HTML"else  echo "Missing Scripts/changelog-to-html.sh; cannot generate HTML release notes." >&2  exit 1fiif [[ "$KEEP_NOTES" != "1" ]]; then  trap 'rm -f "$NOTES_HTML"' EXITfi DOWNLOAD_URL_PREFIX=${SPARKLE_DOWNLOAD_URL_PREFIX:-"https://github.com/steipete/CodexBar/releases/download/v${VERSION}/"} # Sparkle provides generate_appcast; ensure it's on PATH (via SwiftPM build of Sparkle's bin) or Xcode dmgif ! command -v generate_appcast >/dev/null; then  echo "generate_appcast not found in PATH. Install Sparkle tools (see Sparkle docs)." >&2  exit 1fi generate_appcast \  --ed-key-file "$PRIVATE_KEY_FILE" \  --download-url-prefix "$DOWNLOAD_URL_PREFIX" \  --embed-release-notes \  --link "$FEED_URL" \  "$ZIP_DIR" echo "Appcast generated (appcast.xml). Upload alongside $ZIP at $FEED_URL"