refactor README.md for clarity and conciseness
This commit is contained in:
83
README.md
83
README.md
@@ -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.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user