#!/bin/bash
set -e

# Configuration
REMOTE_USER="seedbox-ssh"
REMOTE_HOST="seedbox.notsosoft.fr"
REMOTE_PATH="/home/downloader"
LOCAL_BASE="/home/seedbox-sync"
LOCK_FILE="/tmp/seedbox-sync.lock"

# 1. Help message (MUST be first to avoid permission errors on find)
if [[ "$1" == "--help" ]] || [[ "$1" == "-h" ]]; then
    echo "Usage: $0"
    echo "Syncs media from $REMOTE_HOST to $LOCAL_BASE"
    echo "Manual trigger: sudo -u seedbox-sync $0"
    exit 0
fi

# 2. Change to a neutral directory to avoid 'find' errors if started from a restricted path
cd /

# 3. Find any available SSH private key
# We only do this if we aren't showing help
SSH_KEY=$(find "$LOCAL_BASE/.ssh" -maxdepth 1 -name "id_*" ! -name "*.pub" 2>/dev/null | head -n 1)

# Media Folders
SOURCE_FILM="$LOCAL_BASE/film"
TARGET_FILM="/home/film/Fresh"

# 4. Check for SSH Key
if [ -z "$SSH_KEY" ] || [ ! -f "$SSH_KEY" ]; then
    echo "❌ ERROR: No SSH private key found in $LOCAL_BASE/.ssh/"
    if [ "$EUID" -ne 0 ]; then
        echo "💡 HINT: You might need to run this as the sync user: 'sudo -u seedbox-sync $0'"
    fi
    exit 1
fi

# 5. Check for Lock File
if [ -f "$LOCK_FILE" ]; then
    echo "⚠️  Sync already in progress."
    exit 0
fi

trap 'rm -f "$LOCK_FILE"' EXIT
touch "$LOCK_FILE"

# 6. Sync Media Function
sync_files() {
    local pass_name=$1
    echo "🚀 Starting $pass_name sync from $REMOTE_HOST..."
    
    rsync -avz \
        --chmod=g+r \
        --exclude 'Downloads' \
        --exclude '.*' \
        --exclude 'scripts' \
        -e "ssh -i $SSH_KEY -o BatchMode=yes -o ConnectTimeout=10" \
        "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/" \
        "$LOCAL_BASE/"
}

# --- PRIMARY PASS ---
sync_files "primary"

# --- VERIFICATION PASS ---
sync_files "verification"

# 7. Hardlink Films to Media Library
if [ -d "$SOURCE_FILM" ]; then
    echo "🔗 Hardlinking films to $TARGET_FILM..."
    sudo -u film mkdir -p "$TARGET_FILM"
    
    (
        cd "$SOURCE_FILM"
        find . -type f -exec sudo -u film cp -al --parents {} "$TARGET_FILM"/ \; 2>/dev/null || true
    )
fi

# 8. Run Sorting Script
SORT_SCRIPT="/usr/local/bin/orion-sort-series"
if [ -x "$SORT_SCRIPT" ]; then
    echo "📂 Running series sorting script..."
    "$SORT_SCRIPT"
fi

echo "✅ Sync and linking completed successfully."
exit 0
