Metadata-Version: 2.4
Name: auditio-db-pattern
Version: 0.2.0
Summary: CLI interactive de génération de patterns de bases de données
Requires-Python: >=3.11
Requires-Dist: jinja2<4,>=3.1
Requires-Dist: questionary<3,>=2.1
Requires-Dist: typer<1,>=0.16
Provides-Extra: dev
Requires-Dist: mypy<2,>=1.17; extra == 'dev'
Requires-Dist: pytest-cov<7,>=6.2; extra == 'dev'
Requires-Dist: pytest<9,>=8.4; extra == 'dev'
Requires-Dist: ruff<1,>=0.12; extra == 'dev'
Provides-Extra: docs
Requires-Dist: furo>=2024.8.6; extra == 'docs'
Requires-Dist: myst-parser<5,>=4; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints<4,>=3.2; extra == 'docs'
Requires-Dist: sphinx-copybutton<1,>=0.5.2; extra == 'docs'
Requires-Dist: sphinx-design<1,>=0.6.1; extra == 'docs'
Requires-Dist: sphinx<9,>=8.2; extra == 'docs'
Provides-Extra: publish
Requires-Dist: build<2,>=1.3; extra == 'publish'
Requires-Dist: twine<7,>=6.2; extra == 'publish'
Description-Content-Type: text/markdown

# auditio-db-pattern

CLI interactive de génération d'un pattern PostgreSQL avec initialisation Docker et migrations Alembic optionnelles.

La documentation complète est disponible dans [docs/index.md](docs/index.md) et peut être générée localement avec `make docs`.

## Prérequis

- Python 3.11 ou supérieur ;
- `pip` ;
- Docker ou Podman pour utiliser les fichiers générés.

## Installation

Dans un environnement virtuel temporaire :

```bash
python -m venv .venv
source .venv/bin/activate
python -m pip install auditio-db-pattern
```

Une installation depuis les sources utilise `python -m pip install .`.

## Utilisation interactive

```bash
auditio-db-pattern init
```

La commande demande :

1. la racine du projet existant ;
2. le nom du projet ;
3. si les fichiers `.env` doivent être créés ;
4. si le pattern de migrations Alembic doit être ajouté.

Le profil interactif génère les bases `main` et `users` avec leurs schémas métier. Les rôles et schémas de migration ne sont ajoutés que lorsque les migrations sont activées.

La CLI ne laisse aucune dépendance vers `auditio-db-pattern` dans le pattern ajouté au projet. Elle peut donc être désinstallée immédiatement :

```bash
python -m pip uninstall auditio-db-pattern
```

## Configuration TOML

La CLI peut produire un contrat TOML depuis le même questionnaire interactif, sans générer le pattern :

```bash
auditio-db-pattern init --generate-config
auditio-db-pattern init --generate-config chemin/config.toml
```

Sans chemin explicite, `auditio-db-pattern.toml` est écrit à la racine du projet indiquée. Un fichier existant n'est remplacé qu'avec `--force`.

Le mode TOML permet de personnaliser la liste des bases et de rejouer une génération :

```bash
auditio-db-pattern init --config auditio-db-pattern.toml
auditio-db-pattern init --config auditio-db-pattern.toml --dry-run
auditio-db-pattern init --config auditio-db-pattern.toml --force
```

Le contrat complet est présenté dans `auditio-db-pattern.example.toml`.

## Développement

```bash
make dev
make check
make docs-open
```

Les tests couvrent la validation TOML, la génération conditionnelle, les permissions des secrets, la protection contre l'écrasement et l'intégration de la commande.

## Construction et publication

```bash
make build
make publish-check
make publish-test
make publish
```

Twine lit les identifiants depuis son mécanisme standard, par exemple `~/.pypirc` ou les variables `TWINE_USERNAME` et `TWINE_PASSWORD`. Aucun secret de publication ne doit être ajouté au dépôt.
