[tools] python = "3.12" hk = "latest" pkl = "latest" [tasks] # ===================== # Testing # ===================== test = "uv run pytest" test-v = { run = "uv run pytest -v", depends = ["sync-all"] } test-cov = { run = "uv run pytest --cov=engine --cov-report=term-missing --cov-report=html", depends = ["sync-all"] } test-cov-open = { run = "mise run test-cov && open htmlcov/index.html", depends = ["sync-all"] } test-browser-install = { run = "uv run playwright install chromium", depends = ["sync-all"] } test-browser = { run = "uv run pytest tests/e2e/", depends = ["test-browser-install"] } # ===================== # Linting & Formatting # ===================== lint = "uv run ruff check engine/ mainline.py" lint-fix = "uv run ruff check --fix engine/ mainline.py" format = "uv run ruff format engine/ mainline.py" # ===================== # Runtime Modes # ===================== run = "uv run mainline.py" run-poetry = "uv run mainline.py --poetry" run-firehose = "uv run mainline.py --firehose" run-websocket = { run = "uv run mainline.py --display websocket", depends = ["sync-all"] } run-sixel = { run = "uv run mainline.py --display sixel", depends = ["sync-all"] } run-kitty = { run = "uv run mainline.py --display kitty", depends = ["sync-all"] } run-pygame = { run = "uv run mainline.py --display pygame", depends = ["sync-all"] } run-both = { run = "uv run mainline.py --display both", depends = ["sync-all"] } run-client = { run = "mise run run-both & sleep 2 && $(open http://localhost:8766 2>/dev/null || xdg-open http://localhost:8766 2>/dev/null || echo 'Open http://localhost:8766 manually'); wait", depends = ["sync-all"] } # ===================== # Command & Control # ===================== cmd = "uv run cmdline.py" cmd-stats = { run = "uv run cmdline.py -w \"/effects stats\"", depends = ["sync-all"] } # ===================== # Benchmark # ===================== benchmark = { run = "uv run python -m engine.benchmark", depends = ["sync-all"] } benchmark-json = { run = "uv run python -m engine.benchmark --format json --output benchmark.json", depends = ["sync-all"] } benchmark-report = { run = "uv run python -m engine.benchmark --output BENCHMARK.md", depends = ["sync-all"] } # Initialize ntfy topics (warm up before first use) topics-init = "curl -s -d 'init' https://ntfy.sh/klubhaus_terminal_mainline_cc_cmd > /dev/null && curl -s -d 'init' https://ntfy.sh/klubhaus_terminal_mainline_cc_resp > /dev/null && curl -s -d 'init' https://ntfy.sh/klubhaus_terminal_mainline > /dev/null" # ===================== # Daemon # ===================== daemon = "nohup uv run mainline.py > nohup.out 2>&1 &" daemon-stop = "pkill -f 'uv run mainline.py' 2>/dev/null || true" daemon-restart = "mise run daemon-stop && sleep 2 && mise run daemon" # ===================== # Environment # ===================== sync = "uv sync" sync-all = "uv sync --all-extras" install = "mise run sync" install-dev = { run = "mise run sync-all && uv sync --group dev", depends = ["sync-all"] } bootstrap = { run = "mise run sync-all && uv run mainline.py --help", depends = ["sync-all"] } clean = "rm -rf .venv htmlcov .coverage tests/.pytest_cache .mainline_cache_*.json nohup.out" clobber = "git clean -fdx && rm -rf .venv htmlcov .coverage tests/.pytest_cache .mainline_cache_*.json nohup.out" # ===================== # CI/CD # ===================== ci = { run = "mise run topics-init && mise run lint && mise run test-cov", depends = ["topics-init", "lint", "test-cov"] } # ===================== # Git Hooks (via hk) # ===================== pre-commit = "hk run pre-commit"