[tox]
envlist = py{310,311,312},lint,type,docs
skip_missing_interpreters = true

[testenv]
description = Run unit tests
deps = -r{toxinidir}/requirements-dev.txt
commands = pytest {posargs}

[testenv:lint]
description = Run linting checks (black, ruff, isort)
skip_install = false
commands =
    black --check src tests
    isort --check-only src tests
    ruff check src tests

[testenv:format]
description = Auto-format code (black, isort)
skip_install = false
commands =
    black src tests
    isort src tests

[testenv:type]
description = Run type checking with mypy
commands = mypy src/webdrop_bridge

[testenv:docs]
description = Build Sphinx documentation
changedir = docs
commands = sphinx-build -W -b html -d {envtmpdir}/doctrees . {envtmpdir}/html

[testenv:coverage]
description = Run tests with coverage report
commands = pytest --cov=src/webdrop_bridge --cov-report=term-missing --cov-report=html

[testenv:build-windows]
description = Build Windows installer (MSI)
platform = win32
whitelist_externals = 
    bash
    powershell
commands = 
    python build/scripts/build_windows.py

[testenv:build-macos]
description = Build macOS DMG package
platform = darwin
whitelist_externals = 
    bash
commands = 
    bash build/scripts/build_macos.sh
