# browser-cli — task runner # Run `just` or `just --list` to see all recipes. # Default browser profile for `install` / quick checks browser := "brave" # Show available recipes default: @just --list # ── Setup ────────────────────────────────────────────────────────────── # Install Python deps + Node deps for the extension build setup: uv sync npm ci # Register the native messaging host for a browser (default: {{browser}}) install browser=browser: uv run browser-cli install {{browser}} # ── Python ───────────────────────────────────────────────────────────── # Run the full Python test suite test: uv run pytest -q # Run tests verbosely testv: uv run pytest -v # Run a single test file or node id, e.g. `just test-one tests/test_api.py` test-one target: uv run pytest -v {{target}} # Run tests with a coverage report cov: uv run pytest --cov=browser_cli --cov-report=term-missing # ── Extension (TypeScript / MV3) ─────────────────────────────────────── # Build the extension bundle (extension/background.js) build: npm run build:extension # Run the JS (node:test) extension tests test-ext: npm run test:extension # Full extension gate: tsc + build + node --check + JS tests check: npm run check:extension # ── Everything ───────────────────────────────────────────────────────── # Run the complete gate: extension check + Python tests ci: check test # ── Release ──────────────────────────────────────────────────────────── # Show the current version version: @grep -m1 '^version' pyproject.toml | cut -d'"' -f2 # Bump version in pyproject.toml AND extension/manifest.json, e.g. `just bump 0.10.5` bump new: sed -i 's/^version = ".*"/version = "{{new}}"/' pyproject.toml sed -i 's/"version": ".*"/"version": "{{new}}"/' extension/manifest.json @echo "bumped to {{new}} — remember to update uv.lock (uv lock) and rebuild the extension" # Verify both version files agree version-check: @py=$(grep -m1 '^version' pyproject.toml | cut -d'"' -f2); \ ext=$(grep -m1 '"version"' extension/manifest.json | cut -d'"' -f4); \ if [ "$py" = "$ext" ]; then echo "ok: $py"; else echo "MISMATCH pyproject=$py manifest=$ext"; exit 1; fi # Build into /tmp/dist-browser-cli and publish using credentials from .env publish: #!/usr/bin/env bash set -euo pipefail set -a [ ! -f .env ] || source .env set +a rm -rf /tmp/dist-browser-cli mkdir -p /tmp/dist-browser-cli uv build --out-dir /tmp/dist-browser-cli uv publish /tmp/dist-browser-cli/* # ── Demos ────────────────────────────────────────────────────────────── # Run the Python SDK demo demo: uv run python examples/demo.py