#!/usr/bin/env bash # publish-apk.sh — Build release APK and update OTA server files. # Usage: ./deploy/publish-apk.sh [changelog message] # Make executable: chmod +x deploy/publish-apk.sh set -euo pipefail REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" OTA_DIR="$REPO_ROOT/deploy/ota-server/public" VERSION_FILE="$OTA_DIR/version.json" APK_SOURCE="$REPO_ROOT/apps/remote/build/app/outputs/flutter-apk/app-release.apk" APK_DEST="$OTA_DIR/mirror-os-remote.apk" CHANGELOG="${1:-Bug fixes and improvements}" # --- Build the release APK --- echo "Building release APK..." cd "$REPO_ROOT/apps/remote" flutter build apk --release if [ ! -f "$APK_SOURCE" ]; then echo "ERROR: APK not found at $APK_SOURCE" exit 1 fi # --- Copy APK to OTA public directory --- echo "Copying APK to OTA server..." cp "$APK_SOURCE" "$APK_DEST" # --- Increment version in version.json --- CURRENT_VERSION=$(python3 -c "import json; print(json.load(open('$VERSION_FILE'))['version'])") NEW_VERSION=$((CURRENT_VERSION + 1)) python3 -c " import json data = { 'version': $NEW_VERSION, 'downloadUrl': 'http://192.168.86.172:9091/mirror-os-remote.apk', 'changelog': '''$CHANGELOG''' } with open('$VERSION_FILE', 'w') as f: json.dump(data, f, indent=2) f.write('\n') " echo "" echo "Published version $NEW_VERSION" echo " Changelog: $CHANGELOG" echo " APK size: $(du -h "$APK_DEST" | cut -f1)" echo "" echo "--- Deploy instructions ---" echo "" echo "If running locally:" echo " cd deploy/ota-server && docker compose up -d" echo "" echo "If deploying to homelab (192.168.86.172):" echo " rsync -avz deploy/ota-server/ homelab:~/ota-server/" echo " ssh homelab 'cd ~/ota-server && docker compose up -d'"