#!/bin/bash
set -e

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

# Media Folders (Paths relative to LOCAL_BASE)
SOURCE_FILM="$LOCAL_BASE/film"
TARGET_FILM="/home/film/Fresh"

# Help message
if [[ "$1" == "--help" ]] || [[ "$1" == "-h" ]]; then
    echo "Usage: $0"
    echo "Syncs media from $REMOTE_HOST to $LOCAL_BASE"
    echo "Manual trigger: sudo systemctl start orion-seedbox-sync.service"
    exit 0
fi

# 1. Check for SSH Key to avoid being banned
if [ ! -f "$SSH_KEY" ]; then
    echo "❌ ERROR: SSH key not found at $SSH_KEY."
    exit 1
fi

# 2. Check for Lock File to avoid multiple runs
if [ -f "$LOCK_FILE" ]; then
    echo "⚠️  Sync already in progress (lock file exists: $LOCK_FILE)."
    exit 0
fi

# Ensure lock file is removed on exit
trap 'rm -f "$LOCK_FILE"' EXIT
touch "$LOCK_FILE"

# 3. Sync Media Function
sync_files() {
    local pass_name=$1
    echo "🚀 Starting $pass_name sync from $REMOTE_HOST..."

    # We synchronize the remote /home/downloader/ content directly into /home/seedbox-sync/
    # - Exclude 'Downloads'
    # - Exclude all hidden files/folders (.*)
    # - Exclude 'scripts' (local folder)
    rsync -avz \
        --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"

# 4. Hardlink Films to Media Library
if [ -d "$SOURCE_FILM" ]; then
    echo "🔗 Hardlinking films from $SOURCE_FILM to $TARGET_FILM..."
    mkdir -p "$TARGET_FILM"

    (
        cd "$SOURCE_FILM"
        # Find all files and create hardlinks in target, skipping if they already exist
        find . -type f -exec cp -al --parents {} "$TARGET_FILM"/ \; 2>/dev/null || true
    )

    # 5. Set Permissions for the Media Library (film:film-admin)
    echo "⚖️  Setting permissions on $TARGET_FILM..."
    chown -R film:film-admin "$TARGET_FILM"
    chmod -R 775 "$TARGET_FILM"
fi

# 6. 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
