#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] && exit 0

# ── Firmware version gate (require >= 0.7.10.0) ──
if [ -f /etc/version ]; then
    FW_VER=$(cat /etc/version)
    # Extract major.minor from TRB1_R_00.MM.NN.P
    FW_MAJOR=$(echo "$FW_VER" | sed -n 's/.*_\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\2/p')
    FW_MINOR=$(echo "$FW_VER" | sed -n 's/.*_\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/p')
    if [ -n "$FW_MAJOR" ] && [ -n "$FW_MINOR" ]; then
        # Require >= 07.10
        if [ "$FW_MAJOR" -lt 7 ] || { [ "$FW_MAJOR" -eq 7 ] && [ "$FW_MINOR" -lt 10 ]; }; then
            echo "ERROR: EasySense Link requires firmware >= TRB1_R_00.07.10.0"
            echo "Current firmware: $FW_VER"
            exit 1
        fi
    fi
fi

# ── Detect install location ──
if [ -d /usr/local/link ]; then
    LINK_DIR=/usr/local/link
else
    LINK_DIR=/link
fi
BACKUP_DIR="$LINK_DIR/backup"

# Only backup if an existing installation is present
if [ -f "$LINK_DIR/link" ] || [ -f "$LINK_DIR/main.py" ]; then
    echo "Backing up existing installation..."

    # Remove old backup
    rm -rf "$BACKUP_DIR"
    mkdir -p "$BACKUP_DIR/app" "$BACKUP_DIR/persist"

    # Backup application files (everything except backup/ and persist/)
    for item in "$LINK_DIR"/*; do
        name="$(basename "$item")"
        [ "$name" = "backup" ] && continue
        [ "$name" = "persist" ] && continue
        cp -a "$item" "$BACKUP_DIR/app/"
    done

    # Backup persist directory
    if [ -d "$LINK_DIR/persist" ]; then
        cp -a "$LINK_DIR/persist/." "$BACKUP_DIR/persist/"
    fi

    # Read version from the existing installation
    OLD_VERSION="unknown"
    OLD_VERSION=$(PYTHONPATH="$LINK_DIR:$LINK_DIR/lib" python3 -c "from version import VERSION; print(VERSION)" 2>/dev/null || echo "unknown")

    # Write backup metadata
    cat > "$BACKUP_DIR/backup_meta.json" << METAEOF
{"version": "$OLD_VERSION", "timestamp": "$(date -u '+%Y-%m-%d %H:%M:%S UTC')"}
METAEOF

    echo "Backup created: version=$OLD_VERSION"
fi

exit 0
