#!/bin/bash
set -euo pipefail

LOG_TAG="nivato-logger-network"
WIFI_IFACE="${WIFI_IFACE:-wlan0}"
LEGACY_NETPLAN="/etc/netplan/99-nivato-logger-network-manager.yaml"

log() {
    echo "[$LOG_TAG] $*"
}

warn() {
    echo "[$LOG_TAG] UWAGA: $*" >&2
}

has_command() {
    command -v "$1" >/dev/null 2>&1
}

remove_legacy_netplan() {
    if [ ! -f "$LEGACY_NETPLAN" ]; then
        return 0
    fi

    warn "Usuwam $LEGACY_NETPLAN (stara konfiguracja mogła wyłączyć ethernet)..."
    rm -f "$LEGACY_NETPLAN"

    if has_command netplan; then
        netplan apply || warn "netplan apply nie powiódł się po usunięciu legacy netplan"
    fi

    systemctl enable systemd-networkd 2>/dev/null || true
    systemctl start systemd-networkd 2>/dev/null || true
}

restart_network_manager() {
    if ! has_command nmcli; then
        warn "nmcli niedostępne — NetworkManager nie jest zainstalowany"
        return 0
    fi

    log "Uruchamiam NetworkManager (tylko WiFi, ethernet bez zmian)..."
    systemctl enable NetworkManager 2>/dev/null || true
    systemctl restart NetworkManager

    sleep 2

    if nmcli -t -f DEVICE device status 2>/dev/null | grep -qx "$WIFI_IFACE"; then
        log "Ustawiam $WIFI_IFACE jako managed..."
        nmcli device set "$WIFI_IFACE" managed yes 2>/dev/null || \
            warn "Nie udało się ustawić $WIFI_IFACE jako managed"
    else
        log "Interfejs $WIFI_IFACE nie wykryty — pomijam"
    fi

    log "Status urządzeń:"
    nmcli -t -f DEVICE,TYPE,STATE device status 2>/dev/null | while IFS= read -r line; do
        log "  $line"
    done
}

main() {
    log "Konfiguracja WiFi (NetworkManager, ethernet bez zmian)..."
    remove_legacy_netplan
    restart_network_manager
    log "Gotowe."
}

main "$@"
