add license and simplify
This commit is contained in:
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Jev Kuznetsov
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
82
README.md
82
README.md
@@ -1,81 +1,31 @@
|
|||||||
# Python CLI Template
|
# 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
|
```bash
|
||||||
- `uv_build` backend and lockfile-first reproducibility
|
cruft create git@git.roxautomation.com:sjev/python-cli-template.git
|
||||||
- Ruff for linting/formatting
|
cd your-project
|
||||||
- MyPy strict mode
|
uv sync --frozen --group dev
|
||||||
- Pytest with coverage
|
uv run invoke lint
|
||||||
- Invoke tasks for common operations
|
uv run invoke test
|
||||||
|
```
|
||||||
|
|
||||||
## Quick Start
|
## Generated structure
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
```
|
```
|
||||||
your-project/
|
your-project/
|
||||||
├── README.md
|
|
||||||
├── pyproject.toml
|
├── pyproject.toml
|
||||||
├── tasks.py
|
├── tasks.py
|
||||||
├── uv.lock
|
├── src/your_package/
|
||||||
├── src/
|
│ ├── __init__.py
|
||||||
│ └── your_package/
|
│ ├── py.typed
|
||||||
│ ├── __init__.py
|
│ └── cli.py
|
||||||
│ ├── py.typed
|
|
||||||
│ └── cli.py
|
|
||||||
└── tests/
|
└── tests/
|
||||||
└── test_cli.py
|
└── test_cli.py
|
||||||
```
|
```
|
||||||
|
|
||||||
## Template Development
|
## License
|
||||||
|
|
||||||
To modify this template:
|
MIT
|
||||||
|
|
||||||
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`
|
|
||||||
|
|||||||
Reference in New Issue
Block a user