#!/usr/bin/env bash
# is_cpp_app_running_windows — Comprueba si un .exe de Windows esta corriendo
# via tasklist.exe desde WSL2. Exit 0 si vivo, exit 1 si no.

is_cpp_app_running_windows() {
    local app_name="${1:-}"

    if [ -z "$app_name" ]; then
        echo "ERROR: uso: is_cpp_app_running_windows <app_name>" >&2
        return 1
    fi

    # Verificar que tasklist.exe esta disponible
    if ! command -v tasklist.exe >/dev/null 2>&1; then
        echo "ERROR: tasklist.exe no encontrado (requiere WSL2 con acceso a Windows tools)" >&2
        return 1
    fi

    # /NH: sin header, /FO CSV: salida CSV, /FI: filtro por imagen
    local output
    output=$(tasklist.exe /FI "IMAGENAME eq ${app_name}.exe" /NH /FO CSV 2>/dev/null)

    # tasklist.exe devuelve "INFO: No tasks..." cuando no hay coincidencia.
    # Con CSV+NH, cada proceso encontrado produce: "imagen.exe","pid","tipo","sesion","mem"
    if echo "$output" | grep -qi "\"${app_name}.exe\""; then
        # Extraer PID y memoria de la primera linea que coincida
        local line
        line=$(echo "$output" | grep -i "\"${app_name}.exe\"" | head -n1)

        # Campos CSV: "imagen","PID","tipo","sesion","MEM K"
        local pid mem
        pid=$(echo "$line" | cut -d',' -f2 | tr -d '"')
        mem=$(echo "$line" | cut -d',' -f5 | tr -d '"' | tr -d ' ')

        echo "RUNNING: PID=${pid} MEM=${mem}"
        return 0
    else
        echo "NOT_RUNNING: ${app_name}"
        return 1
    fi
}

if [ "${BASH_SOURCE[0]}" = "$0" ]; then
    is_cpp_app_running_windows "$@"
fi
