forked from genewildish/Mainline
- Add TransformDataSource for filtering/mapping source items - Add MetricsDataSource for rendering live pipeline metrics as ASCII art - Fix display stage registration in StageRegistry - Register sources with both class name and simple name aliases - Fix DisplayStage.init() to pass reuse parameter - Simplify create_default_pipeline to use DataSourceStage wrapper - Set pygame as default display - Remove old pipeline tasks from mise.toml - Add tests for new pipeline architecture
108 lines
4.5 KiB
TOML
108 lines
4.5 KiB
TOML
[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"] }
|
|
|
|
# =====================
|
|
# Pipeline Architecture (unified Stage-based)
|
|
# =====================
|
|
|
|
run-pipeline = { run = "uv run mainline.py --pipeline --display pygame", depends = ["sync-all"] }
|
|
run-pipeline-demo = { run = "uv run mainline.py --pipeline --pipeline-preset demo --display pygame", depends = ["sync-all"] }
|
|
run-pipeline-poetry = { run = "uv run mainline.py --pipeline --pipeline-preset poetry --display pygame", depends = ["sync-all"] }
|
|
run-pipeline-websocket = { run = "uv run mainline.py --pipeline --pipeline-preset websocket", depends = ["sync-all"] }
|
|
run-pipeline-firehose = { run = "uv run mainline.py --pipeline --pipeline-preset firehose --display pygame", depends = ["sync-all"] }
|
|
|
|
# =====================
|
|
# Presets (Animation-controlled modes)
|
|
# =====================
|
|
|
|
run-preset-demo = { run = "uv run mainline.py --preset demo --display pygame", depends = ["sync-all"] }
|
|
run-preset-pipeline = { run = "uv run mainline.py --preset pipeline --display pygame", 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" |