Metadata-Version: 2.4
Name: measles
Version: 2026.40.4
Summary: Continuous cookiecutter featuring mise
Project-URL: source, https://github.com/biobuddies/measles
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Provides-Extra: build
Requires-Dist: setuptools; extra == "build"
Provides-Extra: pre-commit
Requires-Dist: actionlint-py; extra == "pre-commit"
Requires-Dist: basedpyright; extra == "pre-commit"
Requires-Dist: cookiecutter; extra == "pre-commit"
Requires-Dist: django-upgrade; extra == "pre-commit"
Requires-Dist: djlint>=1.45.0; extra == "pre-commit"
Requires-External: hadolint-py @ git+https://github.com/AleksaC/hadolint-py.git ; extra == "pre-commit"
Requires-Dist: pre-commit-hooks; extra == "pre-commit"
Requires-Dist: pyrefly; extra == "pre-commit"
Requires-Dist: ruff; extra == "pre-commit"
Requires-Dist: shellcheck-py; extra == "pre-commit"
Requires-Dist: shfmt-py; extra == "pre-commit"
Requires-Dist: styleforce; extra == "pre-commit"
Requires-Dist: typos; extra == "pre-commit"
Requires-Dist: validate-pyproject[all]; extra == "pre-commit"
Requires-Dist: yamllint; extra == "pre-commit"
Provides-Extra: test
Requires-Dist: django; extra == "test"
Requires-Dist: helicopyter; extra == "test"
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-httpserver; extra == "test"

# Measles

Continuous [cookiecutter](https://github.com/cookiecutter/cookiecutter) featuring
[mise](https://github.com/jdx/mise).

## Bootstrap

```bash
cat <<'EOF' > .cookiecutter.yaml
default_context:
    languages: Node,Python
    python_dependencies:
        - django
        - gunicorn
EOF
mise use --global uv@latest
uvx cookiecutter --config-file .cookiecutter.yaml --no-input --overwrite-if-exists https://github.com/biobuddies/measles.git
mise trust --yes
mise install
mise pre-commit-all
mise test
```

## Autoformat excludes

To exclude files from autoformatting and linting, add extended regular expressions
for relative paths from the repository root to `.config/autoformat-excludes` like:

```
^public/bundle\.min\.js$
^publickey\.asc$
```

## Agent sandboxes

Set environment setup script to

```bash
grep -qs 'setup\.bash' .claude/hooks/session-start.sh || measles/.config/setup.bash
```

This accommodates Claude Code on the web's different single and multiple repository startups.
Always include measles in multiple repository sessions: they start in the parent directory,
where only this script can run setup.

TODO re-test on Codex Cloud, probably leveraging `.codex/setup.sh`
