Files
2026-09-04 21:30:51 +02:00

42 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Lädt die gebaute APK in Gitas Paket-Registry.
#
# Der Weg über die Registry umgeht die Typenliste für Release-Anhänge, die
# `.apk` nicht enthält. Siehe RELEASE.md.
#
# Android/upload-package.sh 1.0.0
set -euo pipefail
VERSION="${1:?Aufruf: upload-package.sh <version>, z. B. 1.0.0}"
SERVER="${GITEA_SERVER:-https://git.home.fritob.de}"
OWNER="${GITEA_OWNER:-fritob}"
TOKEN_FILE="${GITEA_TOKEN_FILE:-$HOME/.gitea-token}"
APK="$(dirname "$0")/app/build/outputs/apk/release/app-release.apk"
[ -f "$APK" ] || {
echo "Keine APK gefunden. Erst bauen:" >&2
echo " source Android/env.sh && cd Android && ./gradlew :app:assembleRelease -PversionName=$VERSION" >&2
exit 1
}
[ -f "$TOKEN_FILE" ] || {
echo "Kein Zugangsschlüssel in $TOKEN_FILE." >&2
echo "In Gitea unter Einstellungen -> Anwendungen einen mit 'write:package' anlegen," >&2
echo "dann: printf %s 'DEIN_TOKEN' > $TOKEN_FILE && chmod 600 $TOKEN_FILE" >&2
exit 1
}
NAME="CamperMonitor-$VERSION.apk"
URL="$SERVER/api/packages/$OWNER/generic/camper-monitor/$VERSION/$NAME"
# Der Schlüssel geht nur an curl und steht nirgends in der Ausgabe.
CODE="$(curl -s -o /dev/null -w '%{http_code}' \
-H "Authorization: token $(cat "$TOKEN_FILE")" \
--upload-file "$APK" "$URL")"
case "$CODE" in
201) echo "Hochgeladen: $URL" ;;
409) echo "Version $VERSION liegt dort schon. Erst löschen oder Version erhöhen." >&2; exit 1 ;;
401|403) echo "Abgelehnt (HTTP $CODE) - fehlt dem Token das Recht 'write:package'?" >&2; exit 1 ;;
*) echo "Fehlgeschlagen, HTTP $CODE" >&2; exit 1 ;;
esac