add license and simplify

This commit is contained in:
Jev
2026-02-17 22:11:35 +01:00
parent 306477b5be
commit cbb2dd44f3
2 changed files with 37 additions and 66 deletions

View File

@@ -1,81 +1,31 @@
# Python CLI Template
A minimal Cookiecutter template for building personal CLI tools with `uv`, Typer, and strict typing.
Minimal Cookiecutter template for python CLI tools. Python 3.12+, uv, Typer, ruff, mypy, pytest.
## Features
## Usage
- CLI with Typer
- `uv_build` backend and lockfile-first reproducibility
- Ruff for linting/formatting
- MyPy strict mode
- Pytest with coverage
- Invoke tasks for common operations
```bash
cruft create git@git.roxautomation.com:sjev/python-cli-template.git
cd your-project
uv sync --frozen --group dev
uv run invoke lint
uv run invoke test
```
## Quick Start
1. Generate a new project:
```bash
cruft create git@git.roxautomation.com:sjev/python-cli-template.git
```
Or locally:
```bash
cookiecutter /path/to/python-cli-template
```
2. Post-generation hook runs `uv lock` to create `uv.lock`.
3. Bootstrap the generated project:
```bash
uv sync --frozen --group dev
uv run invoke lint
uv run invoke test
```
## Template Variables
| Variable | Description | Example |
|----------|-------------|---------|
| `project_name` | Human-readable project name | "My CLI App" |
| `project_slug` | Repository/directory name | "my-cli-app" |
| `package_name` | Python package name | "my_cli_app" |
| `description` | Short project description | "A modern CLI tool" |
| `author_name` | Author's full name | "Your Name" |
| `author_email` | Author's email | "your.email@example.com" |
| `version` | Initial version | "0.1.0" |
Python is fixed to 3.12+ by template policy.
## Generated Project Structure
## Generated structure
```
your-project/
├── README.md
├── pyproject.toml
├── tasks.py
├── uv.lock
├── src/
── your_package/
├── __init__.py
│ ├── py.typed
│ └── cli.py
├── src/your_package/
│ ├── __init__.py
── py.typed
└── cli.py
└── tests/
└── test_cli.py
```
## Template Development
## License
To modify this template:
1. Edit files in `{{cookiecutter.project_slug}}/`
2. Update variables in `cookiecutter.json`
3. Test changes:
```bash
./test.sh
```
## Requirements
- Python 3.12+
- `uv`
- `cruft` or `cookiecutter`
MIT