La commande docs:pdf dans Forge¶
Cette page décrit la commande forge docs:pdf, qui génère un PDF de la documentation Forge à partir d'une source Quarkdown.
Le code correspondant est cli/docs/quarkdown.py ; la fonction publique est build_pdf().
1. Rôle¶
forge docs:pdf produit un fichier PDF de la documentation Forge à partir d'une source Quarkdown.
La source lue est docs/quarkdown/forge-documentation.qd.
La cible écrite est build/docs/forge-documentation.pdf.
Quarkdown est une dépendance externe optionnelle.
Le module ne l'importe jamais : il appelle le binaire quarkdown via subprocess s'il est présent sur le PATH.
Si le binaire est absent, la commande affiche un message d'installation et s'arrête proprement, sans erreur Python.
Le cœur de Forge ne dépend pas de cette génération.
2. Vue d'ensemble rapide¶
| Élément | Valeur |
|---|---|
| Commande forge | forge docs:pdf |
| Module Python | cli.docs.quarkdown |
| Fonction publique | build_pdf() |
| Catégorie | outillage documentaire (CLI) |
| Rôle | générer un PDF de la documentation via Quarkdown |
| Entrées | docs/quarkdown/forge-documentation.qd |
| Sorties | build/docs/forge-documentation.pdf |
| Dépendance externe | binaire quarkdown (Java 17+), optionnel |
| Fichiers touchés | le PDF cible, plus le dossier build/docs/ créé si besoin |
| Mode Forge | Forge génère (un PDF de sortie), Forge lit (la source .qd) |
| Arguments | aucun |
La commande ne modifie aucun fichier de code utilisateur.
Elle lit une source documentaire et écrit un PDF dans build/docs/.
3. Schémas UML¶
Le déroulé de la commande est un flux à étapes (détection du binaire, recherche de la racine, génération, déplacement du PDF).
Un diagramme de séquence le décrit clairement.
3.1 Diagramme de séquence¶
Le diagramme montre l'ordre des opérations exécutées par build_pdf().
Il fait apparaître les points d'arrêt anticipés : absence du binaire, racine introuvable, source absente, échec de Quarkdown, PDF introuvable après génération.
sequenceDiagram
actor Dev as Développeur
participant Forge as forge docs:pdf
participant Build as build_pdf()
participant Quarkdown as binaire quarkdown
participant FS as Système de fichiers
Dev->>Forge: forge docs:pdf
Forge->>Build: build_pdf()
Build->>FS: shutil.which("quarkdown")
alt binaire absent
Build-->>Dev: message d'installation, arrêt
else binaire présent
Build->>FS: cherche la racine du dépôt
Build->>FS: vérifie docs/quarkdown/forge-documentation.qd
Build->>FS: crée build/docs/ si besoin
Build->>Quarkdown: quarkdown c <source> --pdf
Quarkdown-->>Build: code retour + PDF généré
Build->>FS: déplace le PDF vers build/docs/forge-documentation.pdf
Build-->>Dev: PDF généré : build/docs/forge-documentation.pdf
end
À retenir :
- la commande vérifie d'abord la présence du binaire
quarkdown; - elle remonte l'arborescence pour trouver la racine du dépôt Forge ;
- elle s'arrête proprement si la source
.qdest absente ; - elle déplace le PDF généré vers
build/docs/forge-documentation.pdf; - chaque étape qui échoue interrompt la commande avec un message clair.
4. API publique et commande¶
La commande s'invoque sans argument.
| Invocation | Effet |
|---|---|
forge docs:pdf |
génère le PDF si Quarkdown est disponible, sinon explique comment l'installer |
La fonction publique appelée par le dispatch est :
| Signature | Rôle |
|---|---|
build_pdf() -> None |
génère le PDF de la documentation Forge via Quarkdown |
Les autres fonctions du module (_find_quarkdown, _find_repo_root, _find_generated_pdf, _log) sont internes et préfixées par un tiret bas.
Elles ne font pas partie de l'API publique.
5. Contextes d'utilisation¶
| Besoin | Commande / Élément |
|---|---|
| Produire une version PDF imprimable de la documentation | forge docs:pdf |
| Travailler sur un poste sans Quarkdown installé | forge docs:pdf affiche les instructions d'installation |
| Construire le site documentaire HTML complet | mkdocs build (hors de cette commande) |
6. Exemples d'utilisation¶
Génération du PDF depuis la racine du dépôt Forge :
Sortie attendue lorsque Quarkdown est installé et la source présente :
[Forge] Génération PDF en cours...
[Forge] → quarkdown c docs/quarkdown/forge-documentation.qd --pdf
[Forge] PDF généré : build/docs/forge-documentation.pdf
Sortie lorsque le binaire quarkdown est absent du PATH :
[ERREUR] Quarkdown n'est pas installé ou n'est pas dans le PATH.
Installation (Linux / macOS) :
curl -fsSL https://raw.githubusercontent.com/quarkdown-labs/get-quarkdown/refs/heads/main/install.sh \
| sudo env "PATH=$PATH" bash
Homebrew :
brew install quarkdown
Quarkdown requiert Java 17+.
7. Détails techniques¶
Dépendance optionnelle, jamais importée
Le module n'importe jamais Quarkdown comme bibliothèque Python.
Il appelle le binaire quarkdown via subprocess, uniquement s'il est trouvé sur le PATH avec shutil.which.
Le cœur de Forge reste donc indépendant de Quarkdown et de Java.
Recherche de la racine du dépôt
La commande remonte l'arborescence depuis le dossier courant jusqu'à trouver un dossier contenant forge.py ou pyproject.toml.
Les chemins de source et de cible sont résolus à partir de cette racine, ce qui permet de lancer la commande depuis un sous-dossier du dépôt.
Arrêts anticipés
La commande s'interrompt avec un message dédié dans plusieurs cas :
- le binaire
quarkdownest absent duPATH; - la racine du dépôt Forge est introuvable ;
- la source
docs/quarkdown/forge-documentation.qdn'existe pas ; - Quarkdown retourne un code non nul ;
- aucun PDF n'est trouvé après la génération.
Emplacement du PDF généré
Quarkdown peut écrire le PDF à côté de la source, dans un sous-dossier au nom du fichier, ou dans un dossier out/.
La commande recherche ces emplacements, puis déplace le PDF trouvé vers build/docs/forge-documentation.pdf.
Voir aussi¶
Cette page est la seule de ce dossier de documentation.
Pour le site documentaire HTML complet, la construction passe par mkdocs build, en dehors de cette commande.