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

LEVEL=""
BASELINE=false
FILE=""

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

if [ -n "$LEVEL" ]; then
    echo "Cambiando level a $LEVEL en phpstan.neon..."
    sed -i '' "s/^\( *level: *\)[0-9]*/\1$LEVEL/" phpstan.neon
fi

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

if [ -n "$FILE" ]; then
    echo "Analizando archivo sin baseline: $FILE"
    CURRENT_LEVEL=$(grep 'level:' phpstan.neon | grep -o '[0-9]*')
    cat > /tmp/phpstan-nobaseline.neon << EOF
parameters:
    level: $CURRENT_LEVEL
    phpVersion: 70100
    checkMissingIterableValueType: false
    checkGenericClassInNonGenericObjectType: false
    symfony:
        container_xml_path: /Users/manuelbustamante/proyectosweb/mbinv/app/cache/dev/appDevDebugProjectContainer.xml

includes:
    - /Users/manuelbustamante/phpstan-bin/vendor/phpstan/phpstan-symfony/extension.neon
EOF
    php tools/phpstan/vendor/bin/phpstan analyse --memory-limit=1G -c /tmp/phpstan-nobaseline.neon "$FILE"
    exit
fi

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

$CMD
