Metadata-Version: 2.4
Name: autoprojectstarter-render
Version: 0.2.0
Summary: AutoProjectStarter template renderer: 3-casing rename, excludes, feature strip, manifest validation. Shared by the app backend and every template's template-check.yml CI.
Author: Armando Berlanga
License: MIT
Requires-Python: >=3.11
Requires-Dist: pydantic>=2.6
Requires-Dist: ruamel-yaml>=0.18
Provides-Extra: dev
Requires-Dist: pytest-cov>=6; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff==0.16.1; extra == 'dev'
Description-Content-Type: text/markdown

# autoprojectstarter-render

The AutoProjectStarter template renderer: 3-casing token rename
(`BaseProject` → PascalCase / UPPER / camelCase), exclude lists, binary skip,
feature stripping (`removePaths`, `FEATURE:<key>` comment markers,
`configPatch`), variable substitution, and Layer-1 manifest validation.

One renderer, not two: the app backend and every template repo's
`template-check.yml` CI pin this same package, so a green template check
proves exactly what the app will generate. `manifestVersion` gates
compatibility.

## Install

```sh
pip install autoprojectstarter-render
```

## Usage

```sh
# Layer-1 validation over a template tree (exit 1 on any failing rule)
autoprojectstarter-render validate .

# Dry-run render, the extremes proven by template CI
autoprojectstarter-render render . /tmp/out --name SampleApp --all-features on
autoprojectstarter-render render . /tmp/out2 --name SampleApp --all-features off

# Individual toggles and variables
autoprojectstarter-render render . /tmp/out --name SampleApp \
  --feature redis-cache=off --var seqDomain=https://seq.example.dev
```

Python API: `render_template`, `run_layer1_checks`, `load_manifest`,
`TemplateManifest`, `RenderError`.

Contains only generic render/strip logic — no secrets, no network, no git.
