Metadata-Version: 2.4
Name: drivedeploy
Version: 0.2.0
Summary: Server-less distribution of frozen Python tools over a shared network drive.
Author-email: Sterling Collins <sterlingcollins@gmail.com>
Project-URL: Homepage, https://github.com/sterlingcollins/drivedeploy
Project-URL: Repository, https://github.com/sterlingcollins/drivedeploy
Requires-Python: >=3.14
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: packaging>=26.2
Provides-Extra: typer
Requires-Dist: typer>=0.12; extra == "typer"
Dynamic: license-file

# drivedeploy

Server-less distribution of **frozen Python tools** over a shared network drive.

Teams without an internal PyPI mirror, internet on end-user machines, or permission
to run servers still have a mapped drive or UNC path. `drivedeploy` turns that
folder into a versioned publish channel and an in-exe self-update path.

## Who this is for

- You ship **frozen** executables (PyInstaller / Nuitka), not `pip install` to users.
- End users can **read a shared drive**; maintainers can write to it.
- You need checksums and in-place updates — not an HTTP update server.

## Install

```bash
uv add drivedeploy
# optional client helpers for tool authors:
uv add "drivedeploy[typer]"
```

## Quick start

1. `drivedeploy init --location '\\corp\tools\drivedeploy'`
2. `drivedeploy prepare`
3. `pyinstaller --onefile --name mytool src/mytool/__main__.py`
4. `drivedeploy check`
5. `drivedeploy publish`
6. `drivedeploy list`

Minimal config (or let `init` scaffold it):

```toml
[tool.drivedeploy]
location = "\\\\corp\\tools\\drivedeploy"
kind = "onefile"
artifact = "dist/mytool.exe"
```

## Add self-update to your tool

```python
from drivedeploy import update

update.finalize_pending()   # first line of main
info = update.check()
if info:
    update.apply()
```

## Documentation

Full guides (maintainer publish, client integration, CLI/config reference):

```bash
uv sync --group docs
uv run mkdocs serve -a 127.0.0.1:10001
```

- [docs/](docs/index.md) — MkDocs site source
- [docs/architecture.md](docs/architecture.md) — deep dive
- [docs/adr/](docs/adr/README.md) — decision records
- [examples/](examples/README.md) — runnable demos

When the Read the Docs project is connected, the public URL will be listed under
`[project.urls]` in `pyproject.toml`.

## Status

**Windows-only** self-update (Phase 2 complete). Non-Windows raises
`UnsupportedPlatformError` in the swap path. See [change-log.md](change-log.md).

Also: `list` / `verify` / `prune` / `init` — see the docs CLI reference.

## License

MIT — see [LICENSE](LICENSE).
