feat: initial ThinkCentre setup repo — Android, Ollama, Otto migration docs + scripts
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
# Android APK Build Wrapper — ThinkCentre 1
|
||||
# Usage: bash build.sh <app> [branch]
|
||||
# app: staysober | blockblitz | ticked
|
||||
# branch: main (default)
|
||||
#
|
||||
# Output: /var/www/downloads/<app>/<app>-latest.apk
|
||||
# Served: http://192.168.0.91:8080/<app>/
|
||||
|
||||
set -e
|
||||
|
||||
APP="${1:-}"
|
||||
BRANCH="${2:-main}"
|
||||
BUILD_DIR="/tmp/builds"
|
||||
SERVE_DIR="/var/www/downloads"
|
||||
GIT_BASE="git@192.168.0.34" # Pi git server
|
||||
|
||||
# App → repo mapping
|
||||
declare -A REPOS=(
|
||||
[staysober]="ottobringts/staysober"
|
||||
[blockblitz]="ottobringts/blockblitz"
|
||||
[ticked]="ottobringts/obsidian-tasks-app"
|
||||
)
|
||||
|
||||
if [[ -z "$APP" || -z "${REPOS[$APP]}" ]]; then
|
||||
echo "Usage: $0 <app> [branch]"
|
||||
echo "Apps: ${!REPOS[@]}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO="${REPOS[$APP]}"
|
||||
WORK_DIR="$BUILD_DIR/$APP"
|
||||
APK_OUT="$SERVE_DIR/$APP"
|
||||
|
||||
echo "=== Building $APP ($BRANCH) ==="
|
||||
echo "Repo: $REPO"
|
||||
|
||||
# Clone / pull
|
||||
if [ -d "$WORK_DIR/.git" ]; then
|
||||
echo "Pulling latest..."
|
||||
cd "$WORK_DIR"
|
||||
git fetch origin
|
||||
git checkout "$BRANCH"
|
||||
git pull origin "$BRANCH"
|
||||
else
|
||||
echo "Cloning..."
|
||||
mkdir -p "$BUILD_DIR"
|
||||
git clone --branch "$BRANCH" "https://github.com/$REPO.git" "$WORK_DIR"
|
||||
cd "$WORK_DIR"
|
||||
fi
|
||||
|
||||
# Set ANDROID_HOME
|
||||
export ANDROID_HOME="$HOME/android-sdk"
|
||||
export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/34.0.0"
|
||||
|
||||
# Expo prebuild if needed
|
||||
if [ -f "app.json" ] && grep -q '"expo"' app.json; then
|
||||
echo "Expo project detected — running prebuild..."
|
||||
npx expo prebuild --platform android --no-install 2>&1 | tail -5
|
||||
fi
|
||||
|
||||
# Gradle build
|
||||
echo "Running Gradle assembleRelease..."
|
||||
cd android 2>/dev/null || cd .
|
||||
chmod +x gradlew
|
||||
./gradlew assembleRelease --no-daemon --quiet 2>&1 | tail -20
|
||||
|
||||
# Find and copy APK
|
||||
APK=$(find . -name "*.apk" -path "*/release/*" | head -1)
|
||||
if [ -z "$APK" ]; then
|
||||
echo "ERROR: No APK found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$APK_OUT"
|
||||
cp "$APK" "$APK_OUT/$APP-latest.apk"
|
||||
|
||||
echo ""
|
||||
echo "=== Build complete ==="
|
||||
echo "APK: $APK_OUT/$APP-latest.apk"
|
||||
echo "URL: http://192.168.0.91:8080/$APP/$APP-latest.apk"
|
||||
ls -lh "$APK_OUT/$APP-latest.apk"
|
||||
Reference in New Issue
Block a user