#!/bin/bash
set -e

# Register bundled FFmpeg 6.1.1 and GStreamer libraries with system linker
if [ "$1" = "configure" ]; then
    # Create ldconfig configuration for bundled libraries
    cat > /etc/ld.so.conf.d/openterface-libs.conf <<'EOF'
# OpenterfaceQT bundled libraries (isolated from system libraries)
# - FFmpeg 6.1.1
# - GStreamer 1.0 (if bundled)
# - JPEG/TurboJPEG
# - VA-API
/usr/lib/openterfaceqt
EOF
    
    # Update library cache
    # Suppress warnings about symlinks - these are expected in bundled scenarios
    ldconfig 2>&1 | grep -v "is not a symbolic link" | grep -v "^$" || true
    
    echo "OpenterfaceQT: Bundled libraries (FFmpeg 6.1.1, GStreamer, etc.) registered with system linker"
    
    # Setup permissions for dialout (serial port access)
    # Add dialout group for standard serial port access
    if getent group dialout > /dev/null; then
        echo "✓ dialout group found"
    else
        groupadd dialout 2>/dev/null || true
        echo "✓ dialout group created"
    fi
    
    # Add uucp group for Arch Linux and similar distros
    if getent group uucp > /dev/null; then
        echo "✓ uucp group found"
    else
        groupadd uucp 2>/dev/null || true
        echo "✓ uucp group created"
    fi
    
    # Setup udev rules for hardware permissions
    # This allows non-root users to access the Openterface device
    cat > /etc/udev/rules.d/51-openterface.rules <<'EOF'
# Openterface USB device access rules
# Allow non-root users to access Openterface devices via USB and hidraw
SUBSYSTEM=="usb", ATTRS{idVendor}=="534d", ATTRS{idProduct}=="2109", TAG+="uaccess"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="534d", ATTRS{idProduct}=="2109", TAG+="uaccess"
SUBSYSTEM=="ttyUSB", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", TAG+="uaccess"
EOF
    
    # Reload udev rules and trigger device detection
    if command -v udevadm &> /dev/null; then
        # Attempt to reload udev rules, but don't fail if udev daemon is not running
        # This is common in Docker containers and CI/CD environments
        if udevadm control --reload-rules 2>/dev/null; then
            udevadm trigger 2>/dev/null || true
            echo "✓ udev rules reloaded and triggered"
        else
            # udevadm failed - likely no udev daemon running (Docker, chroot, etc.)
            # Still exit successfully since udev rules are installed
            echo "ℹ️  udevadm not available or udev daemon not running (expected in containers)"
            echo "   udev rules will be applied when udev daemon becomes available"
        fi
    fi
    
    echo "OpenterfaceQT: Device permissions configured"
    
    # Install desktop entry for system start menu
    if command -v update-desktop-database &> /dev/null; then
        update-desktop-database /usr/share/applications 2>/dev/null || true
        echo "✓ Desktop entry registered in system menu"
    fi
    
    # Update icon cache for the desktop environment
    if command -v update-icon-caches &> /dev/null; then
        update-icon-caches /usr/share/icons/hicolor 2>/dev/null || true
        echo "✓ Icon cache updated"
    fi
fi

exit 0

