README.md 3923 octets

Module Dagger — girust-doc

Module Dagger (Python SDK) qui construit la documentation gitrust en mode Power (convention gitrust : .dagger/ à la racine du dépôt → dagger call -m .dagger/ <fn>).

Prérequis

  • Dagger CLIv0.14
  • Docker ou Podman accessible (moteur conteneur)
  • Python ≥ 3.11 (seul le conteneur Dagger en a besoin, pas l'hôte)

Fonctions exposées

FonctionRôleSortie
baseImage outillée (Rust + Node + gettext + mdBook + preprocessors)Container
buildConstruit UNE langue (par défaut fr)Directory
build-allConstruit les 6 langues + landing page Accept-LanguageDirectory
lintmarkdownlint-cli2 sur tous les .mdstdout
validate-mermaidmmdc sur chaque .mmd de diagrams/stdout
ciPipeline complet : lint + validate-mermaid + build-allDirectory

Exemples d'utilisation

Construire toutes les langues et exporter dans ./dist/

dagger call -m .dagger/ build-all --source=. export --path=./dist

Construire uniquement l'anglais

dagger call -m .dagger/ build --source=. --lang=en export --path=./dist/en

Lint seul (échoue si violations)

dagger call -m .dagger/ lint --source=.

Pipeline CI complet

dagger call -m .dagger/ ci --source=. export --path=./public

Obtenir un terminal interactif dans l'image de build

dagger call -m .dagger/ base terminal

Intégration avec gitrust

Quand ce dépôt est poussé sur une instance gitrust, le runner CI détecte automatiquement .dagger/ et exécute :

dagger call -m .dagger/ ci

Pour contrôler précisément ce que gitrust-ci appelle, ajouter dans le dépôt un .gitrust-ci.yml minimal qui délègue à Dagger :

# .gitrust-ci.yml
language: custom
power_mode: true
entrypoint: "dagger call -m .dagger/ ci"

Structure du dossier

.dagger/
├── dagger.json             # métadonnées du module (sdk=python)
├── pyproject.toml          # dépendances Python + config dagger
├── README.md               # ce fichier
└── src/
    └── girust_doc/
        └── __init__.py     # implémentation du module

Développement local du module

# Générer les types Dagger (auto-complétion)
dagger develop -m .dagger/

# Vérifier qu'une fonction est bien exposée
dagger -m .dagger/ functions

# Tester sans export (dry-run côté conteneur)
dagger call -m .dagger/ ci --source=.

Décisions d'architecture

  • Python plutôt que Go : aligné avec l'écosystème gitrust (le ci-engine de gitrust est lui-même écrit en Python), et pas besoin de Go installé localement.
  • Image rust:1.82-slim-bookworm : base officielle Rust pour installer mdBook et mdBook-mermaid via cargo install. Node.js et npm ajoutés via apt pour markdownlint-cli2 et @mermaid-js/mermaid-cli.
  • Cache cargo : volume Dagger monté sur /usr/local/cargo/registry pour éviter de re-télécharger les crates à chaque CI.
  • Exclusions : book/, node_modules/, .git/, .dagger/ ne sont pas envoyés au conteneur (gain de temps et d'espace).

Voir aussi