generated from coulomb/repo-seed
Document uv tool install path and uv run fallback so sandboxer is available outside the project venv after make install.
57 lines
1.3 KiB
Markdown
57 lines
1.3 KiB
Markdown
## Stack
|
|
|
|
- **Language:** Python 3.11+
|
|
- **Package manager:** [uv](https://docs.astral.sh/uv/)
|
|
- **Build:** hatchling (src layout: `src/sandboxer/`)
|
|
- **CLI:** typer (`sandboxer` entry point)
|
|
- **Test:** pytest
|
|
- **Lint / format:** ruff
|
|
|
|
## Dev Commands
|
|
|
|
Run from the repo root. First-time setup:
|
|
|
|
```bash
|
|
make setup # uv sync --all-groups → .venv
|
|
make install # sandboxer → ~/.local/bin (ensure ~/.local/bin is on PATH)
|
|
```
|
|
|
|
Without global install, prefix commands with `uv run` from the repo root:
|
|
|
|
```bash
|
|
uv run sandboxer create --profile profile.compose-e2e --input repo=/path/to/repo
|
|
```
|
|
|
|
Day-to-day verification (run before committing):
|
|
|
|
```bash
|
|
make check # lint + test
|
|
make test # pytest
|
|
make lint # ruff check
|
|
make format # ruff format (apply fixes)
|
|
make build # uv build (wheel + sdist)
|
|
make cli-version # smoke test: sandboxer version
|
|
```
|
|
|
|
Sandbox CLI (v0):
|
|
|
|
```bash
|
|
sandboxer create --profile profile.compose-e2e --input repo=/path/to/repo
|
|
sandboxer get <id>
|
|
sandboxer list
|
|
sandboxer destroy <id>
|
|
sandboxer recreate <id>
|
|
```
|
|
|
|
Equivalent `uv` invocations without Make:
|
|
|
|
```bash
|
|
uv sync --all-groups
|
|
uv run pytest
|
|
uv run ruff check .
|
|
uv run ruff format .
|
|
uv build
|
|
uv run sandboxer version
|
|
```
|
|
|
|
No long-running service yet — API and provisioner land in SAND-WP-0002. |