# Justfile pour le projet DSN Parser
# https://github.com/casey/just

# Liste des recettes disponibles
default:
    @just --list

# Génère les fichiers Python dans src/dsn_tools/
generate:
    cd generator && uv run python generate_dsn_parser.py dsn-datatypes-CT2026.xlsx --output-dir ../src/dsn_tools
    @echo "✓ Fichiers générés dans ./src/dsn_tools"

# Formate les fichiers générés avec ruff
format-generated:
    uv run ruff format src/dsn_tools/
    @echo "✓ Fichiers générés formatés"

# Vérifie le formattage du code générateur avec ruff
check-format:
    uv run ruff format --check generator/
    @echo "✓ Ruff a validé le code générateur"

# Vérifie le formattage du code généré avec ruff
check-format-generated:
    uv run ruff format --check src/dsn_tools/
    @echo "✓ Ruff a validé le code généré"

# Vérifie le code générateur avec ruff
lint:
    uv run ruff check generator/
    @echo "✓ Ruff a validé le code générateur"

# Vérifie le code généré avec ruff
lint-generated:
    uv run ruff check src/dsn_tools/
    @echo "✓ Ruff a validé le code généré"

# Teste le parsing d'un fichier DSN
test-parse file="tests/test_example":
    uv run python -m dsn_tools {{ file }} --json > /dev/null
    @echo "✓ Parsing de {{ file }} réussi"

# Build le package pour PyPI
build:
    uv build
    @echo "✓ Package buildé dans dist/"

# Publie sur PyPI (nécessite credentials)
publish: build
    uv publish
    @echo "✓ Publié sur PyPI"

# Tâche complète : génère, formate, lint et teste
test-all: generate format-generated lint-generated check-format-generated test-parse
    @echo ""
    @echo "✅ Tous les tests ont réussi !"

# Nettoie les fichiers générés
clean:
    rm -rf src/dsn_tools/*.py src/dsn_tools/*.lark
    @echo "✓ Fichiers générés supprimés"
