refactor README.md for clarity and conciseness

This commit is contained in:
Jev
2026-02-17 22:04:12 +01:00
parent 1f3c026b5b
commit 306477b5be

View File

@@ -1,39 +1,31 @@
# Python App Template # Python CLI Template
A Cookiecutter template for building CLI-first Python applications with `uv`, Typer, Pydantic, and strict typing. A minimal Cookiecutter template for building personal CLI tools with `uv`, Typer, and strict typing.
## Features ## Features
- CLI-first architecture with Typer - CLI with Typer
- Local-first config (XDG paths) with env override
- `uv_build` backend and lockfile-first reproducibility - `uv_build` backend and lockfile-first reproducibility
- Ruff for linting/formatting - Ruff for linting/formatting
- MyPy strict mode - MyPy strict mode
- Pytest with coverage support - Pytest with coverage
- Invoke tasks for common operations - Invoke tasks for common operations
- `py.typed` marker for typed packages
- Example command wired from core `commands/` into CLI
## Quick Start ## Quick Start
1. Install cookiecutter: 1. Generate a new project:
```bash ```bash
pipx install cookiecutter cruft create git@git.roxautomation.com:sjev/python-cli-template.git
```
2. Generate a new project:
```bash
cruft create https://gitlab.com/roxautomation/templates/python-app-template
``` ```
Or locally: Or locally:
```bash ```bash
cookiecutter /path/to/python-app-template cookiecutter /path/to/python-cli-template
``` ```
3. Post-generation hook runs `uv lock` to create `uv.lock`. 2. Post-generation hook runs `uv lock` to create `uv.lock`.
4. Bootstrap the generated project: 3. Bootstrap the generated project:
```bash ```bash
uv sync --frozen --group dev uv sync --frozen --group dev
uv run invoke lint uv run invoke lint
@@ -66,52 +58,9 @@ your-project/
│ └── your_package/ │ └── your_package/
│ ├── __init__.py │ ├── __init__.py
│ ├── py.typed │ ├── py.typed
── cli/ ── cli.py
│ │ ├── __init__.py └── tests/
│ ├── app.py └── test_cli.py
│ │ ├── common.py
│ │ ├── config.py
│ │ └── hello.py
│ ├── config/
│ │ ├── __init__.py
│ │ ├── paths.py
│ │ └── settings.py
│ ├── commands/
│ │ ├── __init__.py
│ │ └── hello.py
│ ├── models/
│ │ └── __init__.py
│ └── utils/
│ ├── __init__.py
│ └── logging.py
├── tests/
│ ├── conftest.py
│ ├── test_cli.py
│ ├── test_internals.py
│ └── test_public.py
└── examples/
└── config_init.sh
```
## Development Workflow
### Setup
```bash
uv sync --frozen --group dev
```
### Code Quality
```bash
uv run ruff check src tests
uv run ruff format --check src tests
uv run mypy src
uv run invoke lint
```
### Testing
```bash
uv run pytest
uv run invoke test
``` ```
## Template Development ## Template Development
@@ -120,8 +69,7 @@ To modify this template:
1. Edit files in `{{cookiecutter.project_slug}}/` 1. Edit files in `{{cookiecutter.project_slug}}/`
2. Update variables in `cookiecutter.json` 2. Update variables in `cookiecutter.json`
3. Modify the post-generation hook in `hooks/post_gen_project.py` 3. Test changes:
4. Test changes:
```bash ```bash
./test.sh ./test.sh
``` ```
@@ -131,8 +79,3 @@ To modify this template:
- Python 3.12+ - Python 3.12+
- `uv` - `uv`
- `cruft` or `cookiecutter` - `cruft` or `cookiecutter`
- `git` (optional, for your project workflow)
## License
MIT License - see LICENSE file for details.