Snapshot of main at 9f39a6e1e (2026-11-02)

This commit is contained in:
Ronald Huynen committed 2026-11-02 10:41:47 +01:00
commit 6ccf1792d7
2580 files changed
+1040202

No files matched your search

+76
View File
@@ -0,0 +1,76 @@
#!/usr/bin/env bash
# Deploy the latest signed APK to the server and update AppVersionController.php
set -euo pipefail
# Server and paths: override with environment variables for another server, e.g.
# APK_REMOTE_HOST=example.org APK_REMOTE_APP_DIR=/var/www/myorg scripts/deploy-apk.sh
REMOTE_USER="${APK_REMOTE_USER:-root}"
REMOTE_HOST="${APK_REMOTE_HOST:-timebank.cc}"
REMOTE_APP_DIR="${APK_REMOTE_APP_DIR:-/var/www/timebank_cc}"
REMOTE_APK_DIR="$REMOTE_APP_DIR/storage/app/public/apk"
REMOTE_CONTROLLER="$REMOTE_APP_DIR/app/Http/Controllers/AppVersionController.php"
# The local checkout is the one this script lives in
LOCAL_APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
APK_DIR="$LOCAL_APP_DIR/storage/app/public/apk"
CONTROLLER="$LOCAL_APP_DIR/app/Http/Controllers/AppVersionController.php"
# --- Find the most recently modified APK in the local storage folder ----------
LOCAL_APK=$(ls -t "$APK_DIR"/timebank-cc-*.apk 2>/dev/null | head -1)
if [[ -z "$LOCAL_APK" ]]; then
echo "ERROR: No timebank-cc-*.apk found in $APK_DIR" >&2
exit 1
fi
REMOTE_FILENAME=$(basename "$LOCAL_APK")
# Read versionCode and versionName from build.gradle.kts — single source of truth
GRADLE="${APK_GRADLE_FILE:-$HOME/AndroidStudioProjects/Timebankcc/app/build.gradle.kts}"
VERSION_CODE=$(grep -oP 'versionCode\s*=\s*\K[0-9]+' "$GRADLE" | head -1)
VERSION_NAME=$(grep -oP 'versionName\s*=\s*"\K[^"]+' "$GRADLE" | head -1)
if [[ -z "$VERSION_CODE" || -z "$VERSION_NAME" ]]; then
echo "ERROR: Could not read version from $GRADLE" >&2
exit 1
fi
# Sanity check: filename should match the versionName in build.gradle.kts
EXPECTED_FILENAME="timebank-cc-${VERSION_NAME}.apk"
if [[ "$REMOTE_FILENAME" != "$EXPECTED_FILENAME" ]]; then
echo "WARNING: APK filename '$REMOTE_FILENAME' does not match build.gradle.kts versionName '$VERSION_NAME'"
echo " Expected: $EXPECTED_FILENAME"
read -r -p "Continue anyway? [y/N] " confirm
[[ "$confirm" =~ ^[Yy]$ ]] || exit 1
fi
echo "APK : $LOCAL_APK"
echo "Version: $VERSION_NAME (code $VERSION_CODE)"
echo "Remote : ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_APK_DIR}/${REMOTE_FILENAME}"
echo ""
# --- Upload APK ---------------------------------------------------------------
echo "Uploading APK..."
scp "$LOCAL_APK" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_APK_DIR}/"
echo "Upload complete."
# --- Update AppVersionController on the server --------------------------------
echo "Updating AppVersionController..."
ssh "${REMOTE_USER}@${REMOTE_HOST}" bash <<EOF
sed -i "s/\\\$versionCode = [0-9]*;/\\\$versionCode = ${VERSION_CODE};/" "${REMOTE_CONTROLLER}"
sed -i "s/\\\$versionName = '[^']*';/\\\$versionName = '${VERSION_NAME}';/" "${REMOTE_CONTROLLER}"
echo "Controller updated:"
grep -E "versionCode|versionName" "${REMOTE_CONTROLLER}"
EOF
# --- Update local AppVersionController to keep it in sync ---------------------
sed -i "s/\$versionCode = [0-9]*;/\$versionCode = ${VERSION_CODE};/" "$CONTROLLER"
sed -i "s/\$versionName = '[^']*';/\$versionName = '${VERSION_NAME}';/" "$CONTROLLER"
echo "Local controller updated."
echo ""
echo "Done. Users on versionCode < ${VERSION_CODE} will be offered the update."