#!/bin/bash # Signiert das fertige DMG mit Mawaris Sparkle-Schlüssel (Schlüsselbund, Konto "mawari") # und schreibt build/appcast.xml. Danach: bash Tools/publish.sh # # Aufruf: bash Tools/make-appcast.sh ["Was ist neu – ein Satz"] set -euo pipefail cd "$(dirname "$0")/.." BASE_URL="https://update.zielke.studio/mawari" VERSION=$(grep -m1 'MARKETING_VERSION:' project.yml | sed -E 's/.*MARKETING_VERSION: *"?([^"]+)"?/\1/') BUILD=$(grep -m1 'CURRENT_PROJECT_VERSION:' project.yml | sed -E 's/.*CURRENT_PROJECT_VERSION: *"?([^"]+)"?/\1/') MIN_OS=$(grep -m1 'macOS:' project.yml | sed -E 's/.*macOS: *"?([^"]+)"?/\1/') DMG="build/Mawari-${VERSION}.dmg" NOTES="${1:-}" SIGN_UPDATE=$(find build/dd build/dd-release -path "*artifacts/sparkle/Sparkle/bin/sign_update" 2>/dev/null | head -1) [ -x "$SIGN_UPDATE" ] || { echo "Fehler: sign_update fehlt – erst einmal bauen." >&2; exit 1; } [ -f "$DMG" ] || { echo "Fehler: $DMG fehlt – erst Tools/build-dmg.sh." >&2; exit 1; } SIG_LINE=$("$SIGN_UPDATE" --account mawari "$DMG") ED_SIG=$(echo "$SIG_LINE" | sed -E 's/.*sparkle:edSignature="([^"]+)".*/\1/') LENGTH=$(echo "$SIG_LINE" | sed -E 's/.*length="([^"]+)".*/\1/') [ -n "$ED_SIG" ] && [ "$ED_SIG" != "$SIG_LINE" ] || { echo "Fehler beim Signieren: $SIG_LINE" >&2; exit 1; } DESC="" [ -n "$NOTES" ] && DESC="${NOTES}

]]>
" cat > build/appcast.xml < Mawari ${BASE_URL}/appcast.xml Updates für Mawari de ${VERSION} ${DESC} $(LC_ALL=C date -u '+%a, %d %b %Y %H:%M:%S +0000') ${BUILD} ${VERSION} ${MIN_OS} XML echo "==> build/appcast.xml für Version $VERSION (Build $BUILD) geschrieben"