#!/bin/bash
# Daily backup script for OpenClaw workspace to GitTea

set -e

TIMESTAMP=$(date +"%Y-%m-%d %H:%M")
LOG_FILE="/tmp/openclaw-backup.log"

echo "🔄 Starting OpenClaw backup... [$TIMESTAMP]" | tee -a "$LOG_FILE"

# GitTea credentials (stored in environment or config)
# For automated backups, credentials should be configured in ~/.git-credentials
# or use SSH keys

# Check if git credentials are configured
if ! git config --global credential.helper &>/dev/null; then
    echo "⚠️  Warning: Git credential helper not configured" | tee -a "$LOG_FILE"
    echo "   Run: git config --global credential.helper store" | tee -a "$LOG_FILE"
fi

# Gotify alert function
send_gotify() {
    local title="$1"
    local message="$2"
    local priority="${3:-0}"
    local gotify_url="${GOTIFY_URL:-http://runtipi.kangaroo-eel.ts.net:8129}"
    local gotify_token="${GOTIFY_API_KEY}"
    
    if [[ -n "$gotify_token" ]]; then
        curl -s -X POST "$gotify_url/message?token=$gotify_token" \
            -H "Content-Type: application/json" \
            -d "{\"title\":\"$title\",\"message\":\"$message\",\"priority\":$priority}" > /dev/null 2>&1
    fi
}

# Function to backup a repo
backup_repo() {
    local path=$1
    local name=$2
    
    cd "$path"
    
    # Check if there are changes
    if [[ -n $(git status --porcelain) ]]; then
        echo "📦 $name: Changes detected, committing..." | tee -a "$LOG_FILE"
        git add -A
        git commit -m "Auto backup: $TIMESTAMP" || echo "⚠️  Commit failed or nothing to commit"
        
        echo "☁️  $name: Pushing to GitTea..." | tee -a "$LOG_FILE"
        if git push origin main 2>&1 | tee -a "$LOG_FILE"; then
            echo "✅ $name: Backup successful" | tee -a "$LOG_FILE"
        else
            echo "❌ $name: Push failed - check credentials" | tee -a "$LOG_FILE"
            send_gotify "⚠️ Backup Failed" "$name push to Gitea failed. Check credentials." 5
        fi
    else
        echo "⏭️  $name: No changes to backup" | tee -a "$LOG_FILE"
    fi
}

# Backup workspace
echo "📂 Backing up workspace..." | tee -a "$LOG_FILE"
backup_repo "/home/openclaw/.openclaw/workspace" "workspace"

echo "" | tee -a "$LOG_FILE"
echo "✅ Backup process complete!" | tee -a "$LOG_FILE"
echo "📄 Log saved to: $LOG_FILE" | tee -a "$LOG_FILE"

# Show recent backups
echo "" | tee -a "$LOG_FILE"
echo "📊 Recent backups:" | tee -a "$LOG_FILE"
cd /home/openclaw/.openclaw/workspace && git log --oneline -3 | tee -a "$LOG_FILE"

# Send success notification
send_gotify "✅ Backup Complete" "OpenClaw backup to Gitea succeeded"