abx-dl is the standalone downloader/extractor CLI that runs ArchiveBox plugin hooks without a full ArchiveBox collection. Keep this repo on main.
- Use
uvanduv runfor Python commands. Do not use systempython, direct.venv/bin/python, orpipcommands. - Prefer existing repo patterns, helper APIs, fixtures, scripts, and command surfaces.
- Keep edits focused and minimal. Do not add wrappers, shims, aliases, or extra abstraction layers unless the current code path requires them.
- Do not weaken assertions, skip tests, xfail tests, or accept flaky behavior.
- No mocks, monkeypatches, fakes, simulated handlers, fake binaries, fake hooks, fake buses, or direct shortcuts around user-facing flows.
- Tests and verification should use real CLI commands, real hooks, real installs, real subprocesses, real DB/config rows where present, real files, real URLs or
pytest-httpserver, and existing fixtures. - Assertions must verify real correctness: exit codes, returned values, event records, filesystem contents, field values, output files, and side effects.
- Start behavior fixes with a red failing test when a test is requested or practical.
- Trace root causes from observed behavior. Do not paper over failures with retries, wider timeouts, broad fallbacks, or looser assertions.
- Read
README.mdfor the full CLI, config, plugin, and release surface.
set -Eeuo pipefail
uv sync
help_output="$(uv run abx-dl --help)"
grep -q 'Usage:' <<<"$help_output"set -Eeuo pipefail
plugin_info="$(uv run abx-dl plugins wget)"
grep -q 'WGET_BINARY=wget' <<<"$plugin_info"
grep -q 'on_Snapshot__35_wget' <<<"$plugin_info"uv run abx-dl dl --plugins=title,wget,screenshot,pdf 'https://example.com'
uv run abx-dl dl --output=html,json,txt,pdf,image 'https://example.com'
uv run abx-dl install wget ytdlp chrome
uv run abx-dl config
uv run abx-dl config --get TIMEOUT
Use targeted live user-facing commands:
set -Eeuo pipefail
tmpdir="$(mktemp -d)"
cd "$tmpdir"
uv run --project /path/to/abx-dl abx-dl dl --plugins=chrome,consolelog,headers,wget 'https://example.com'
test -s index.jsonlThe main CI workflow runs the exhaustive repository suite and the separate Prek
job runs every hook.
Background hook scheduling is based only on bg vs fg; filename words like
daemon and finite are human hints only. Background hooks advance the
scheduler on their first stdout line or successful completion; that first stdout
line must mean the hook is ready for the next hook to launch, and non-ready
diagnostics belong on stderr.