Metadata-Version: 2.5
Name: zen-cli
Version: 0.1.1
Summary: A small command-line toolkit.
Project-URL: Homepage, https://pypi.org/project/zen-cli/
Author: zen-cli authors
License-Expression: MIT
License-File: LICENSE
Requires-Python: <3.13,>=3.12
Requires-Dist: click>=8.1
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: release
Requires-Dist: build; extra == 'release'
Requires-Dist: twine; extra == 'release'
Description-Content-Type: text/markdown

# zen-cli

Python 3.12 command-line skeleton. All local workflow goes through `dev.py`.

## Develop

You need Python 3.12. On Windows, if `python` is another version, use `py -3.12`:

```text
py -3.12 dev.py init
zen --help
```

`init` creates `.venv`, runs `pip install -U -e ".[dev]"`, and installs git hooks.

| Command | What it does |
|---|---|
| `python dev.py init` | Create the env and editable-install the CLI |
| `python dev.py lint` | Ruff fix/format and mypy |
| `python dev.py test` | unittest |
| `python dev.py bump [--part patch\|minor\|major]` | Change `version` in `pyproject.toml` |
| `python dev.py publish` | Build and upload to PyPI |
| `python dev.py release [--part patch]` | lint, test, bump, then publish |
| `python dev.py clean [--venv]` | Remove artifacts; `--venv` also deletes `.venv` |

Publish needs a PyPI API token in `TWINE_PASSWORD` (optional `TWINE_USERNAME=__token__`) or `~/.pypirc`. Do not commit credentials. PyPI rejects uploading the same version twice.

## Jenkins

The `Jenkinsfile` only calls `dev.py`. Default runs `init`, `lint`, and `test`. Set `PUBLISH=true` to run `release`. Store the PyPI token as a Jenkins secret text credential named `pypi-api-token`.

## Install a published build

```text
pip install zen-cli
pipx install zen-cli
```
