#!/bin/bash
cd /Users/manuelbustamante/proyectosweb/mbinv

LEVEL=""
BASELINE=false
FILE=""
NO_BASELINE=false

for arg in "$@"; do
    case $arg in
        --baseline) BASELINE=true ;;
        --no-baseline) NO_BASELINE=true ;;
        --file=*) FILE="${arg#--file=}" ;;
        *) LEVEL="$arg" ;;
    esac
done

# Determinar el nivel efectivo sin modificar phpstan-base.neon permanentemente
CURRENT_LEVEL=$(grep 'level:' phpstan-base.neon | grep -o '[0-9]*')
if [ -n "$LEVEL" ]; then
    CURRENT_LEVEL="$LEVEL"
fi

echo "Limpiando cache de PHPStan..."
php tools/phpstan/vendor/bin/phpstan clear-result-cache

if [ -n "$FILE" ]; then
    if [ "$NO_BASELINE" = true ]; then
        # Sin baseline: phpstan-base.neon (tiene ignoreErrors pero no el baseline)
        echo "Analizando archivo SIN baseline (level $CURRENT_LEVEL): $FILE"
        PHPSTAN_CONFIG="/Users/manuelbustamante/proyectosweb/mbinv/phpstan-base.neon"
    else
        # Con baseline: phpstan.neon = phpstan-base.neon + phpstan-baseline.neon
        echo "Analizando archivo con baseline (level $CURRENT_LEVEL): $FILE"
        PHPSTAN_CONFIG="/Users/manuelbustamante/proyectosweb/mbinv/phpstan.neon"
    fi
    php tools/phpstan/vendor/bin/phpstan analyse --memory-limit=1G \
        -c "$PHPSTAN_CONFIG" "$FILE"
    exit
fi

# Para análisis completo: actualizar phpstan.neon si se pidió cambio de level
if [ -n "$LEVEL" ]; then
    echo "Cambiando level a $LEVEL en phpstan-base.neon..."
    sed -i '' "s/^\( *level: *\)[0-9]*/\1$LEVEL/" phpstan-base.neon
fi

echo "Ejecutando analisis (level $CURRENT_LEVEL)..."
CMD="php tools/phpstan/vendor/bin/phpstan analyse --memory-limit=1G"
[ "$BASELINE" = true ] && CMD="$CMD --generate-baseline"

$CMD
