Contribuer¶
Installation développeur¶
Conventions de code¶
Python¶
- Typer pour la CLI, FastAPI pour le web, PyYAML pour le parsing
- Type hints sur les fonctions publiques
- ruff pour lint + format (zéro violation)
- Un fichier = une responsabilité
Shell¶
shellcheckpropreset -euo pipefail- Uniquement pour les scripts de boot et l'intégration système
Langue¶
- Français : docs, commentaires, UI, messages CLI
- Anglais : code (variables, fonctions, classes, CLI)
Workflow¶
flowchart TD
S["1. Spec d'abord"] --> T["2. Tests exhaustifs"]
T --> C["3. Code après"]
C --> L["4. Lint (ruff)"]
L --> R["5. Tests passent"]
R --> PR["6. Pull request"]
style S fill:#6366f1,color:#fff
style T fill:#3b82f6,color:#fff
style C fill:#10b981,color:#fff
Spec-driven, test-driven : spécification d'abord, tests exhaustifs ensuite (unitaires, Molecule, E2E et Behavior), code après.
Vérifications¶
Structure du code source¶
src/anklume/
cli/ # Commandes CLI (Typer)
engine/ # Moteur PSOT (domains/*.yml → Incus)
provisioner/ # Interface Ansible
i18n/ # Traductions (fr, en)
tests/ # pytest + behave
CI/CD¶
GitHub Actions exécute automatiquement sur chaque push et PR :
- lint —
ruff check+ruff format --check - shellcheck — scripts shell
- test —
pytest(unitaires) - build —
uv build