feat: accept any .adoc file in PDF generation script

This commit is contained in:
2026-07-25 16:51:05 +04:00
parent 84013376f2
commit 4a4b56296e
3 changed files with 55 additions and 30 deletions
+2 -2
View File
@@ -26,8 +26,8 @@ temp/
cache/ cache/
# Artefacts de documentation générés (docs/generate-readme-pdf.sh) # Artefacts de documentation générés (docs/generate-readme-pdf.sh)
README.html /*.html
README.pdf /*.pdf
# Dossier pour les images d'annonces (tout ignorer sauf .gitkeep) # Dossier pour les images d'annonces (tout ignorer sauf .gitkeep)
uploads/* uploads/*
+8 -4
View File
@@ -892,16 +892,18 @@ Bonnes pratiques du dépôt :
==== 📄 Exporter la documentation (HTML / PDF) ==== 📄 Exporter la documentation (HTML / PDF)
Ce README peut être exporté en HTML et en PDF en une seule commande : Ce README peut être exporté en HTML et en PDF en une seule commande (tout fichier `.adoc` peut être passé en argument) :
[source,bash] [source,bash]
---- ----
docs/generate-readme-pdf.sh # README.html + README.pdf docs/generate-readme-pdf.sh # README.html + README.pdf
docs/generate-readme-pdf.sh --html # HTML seulement docs/generate-readme-pdf.sh --html # HTML seulement
docs/generate-readme-pdf.sh --pdf # PDF seulement docs/generate-readme-pdf.sh --pdf # PDF seulement
docs/generate-readme-pdf.sh DEPLOY.adoc # DEPLOY.html + DEPLOY.pdf
docs/generate-readme-pdf.sh DEPLOY.adoc --pdf # DEPLOY.pdf seulement
---- ----
Les fichiers sont produits à la racine du projet et ignorés par Git (`.gitignore`). Les fichiers sont produits à la racine du projet (nommés d'après la source) et ignorés par Git (`.gitignore`).
Prérequis : `asciidoctor`, `chromium` (rendu headless) et le paquet `fonts-noto-color-emoji` (émojis couleur dans le PDF). La feuille de style `docs/docinfo.html` (fallback emoji + règles d'impression) est injectée automatiquement via le mécanisme `docinfo` d'Asciidoctor. Prérequis : `asciidoctor`, `chromium` (rendu headless) et le paquet `fonts-noto-color-emoji` (émojis couleur dans le PDF). La feuille de style `docs/docinfo.html` (fallback emoji + règles d'impression) est injectée automatiquement via le mécanisme `docinfo` d'Asciidoctor.
@@ -1820,16 +1822,18 @@ Repository best practices:
==== 📄 Exporting the documentation (HTML / PDF) ==== 📄 Exporting the documentation (HTML / PDF)
This README can be exported to HTML and PDF with a single command: This README can be exported to HTML and PDF with a single command (any `.adoc` file can be passed as argument):
[source,bash] [source,bash]
---- ----
docs/generate-readme-pdf.sh # README.html + README.pdf docs/generate-readme-pdf.sh # README.html + README.pdf
docs/generate-readme-pdf.sh --html # HTML only docs/generate-readme-pdf.sh --html # HTML only
docs/generate-readme-pdf.sh --pdf # PDF only docs/generate-readme-pdf.sh --pdf # PDF only
docs/generate-readme-pdf.sh DEPLOY.adoc # DEPLOY.html + DEPLOY.pdf
docs/generate-readme-pdf.sh DEPLOY.adoc --pdf # DEPLOY.pdf only
---- ----
Files are produced in the project root and are Git-ignored (`.gitignore`). Files are produced in the project root (named after the source) and are Git-ignored (`.gitignore`).
Requirements: `asciidoctor`, `chromium` (headless rendering) and the `fonts-noto-color-emoji` package (color emoji in the PDF). The `docs/docinfo.html` stylesheet (emoji fallback + print rules) is automatically injected through Asciidoctor's `docinfo` mechanism. Requirements: `asciidoctor`, `chromium` (headless rendering) and the `fonts-noto-color-emoji` package (color emoji in the PDF). The `docs/docinfo.html` stylesheet (emoji fallback + print rules) is automatically injected through Asciidoctor's `docinfo` mechanism.
+36 -15
View File
@@ -1,11 +1,13 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Generate the documentation export(s) from README.adoc. # Generate the HTML/PDF export(s) from any .adoc document (README.adoc by default).
# #
# docs/generate-readme-pdf.sh # README.html + README.pdf # docs/generate-readme-pdf.sh # README.html + README.pdf
# docs/generate-readme-pdf.sh --html # README.html only # docs/generate-readme-pdf.sh --html # README.html only
# docs/generate-readme-pdf.sh --pdf # README.pdf only # docs/generate-readme-pdf.sh --pdf # README.pdf only
# docs/generate-readme-pdf.sh DEPLOY.adoc # DEPLOY.html + DEPLOY.pdf
# docs/generate-readme-pdf.sh DEPLOY.adoc --pdf # DEPLOY.pdf only
# #
# Both outputs land in the project root and are Git-ignored. # Outputs land in the project root (named after the source) and are Git-ignored.
# #
# Requirements: # Requirements:
# - asciidoctor (e.g. gem install asciidoctor) # - asciidoctor (e.g. gem install asciidoctor)
@@ -22,14 +24,41 @@
set -euo pipefail set -euo pipefail
cd "$(dirname "$0")/.." cd "$(dirname "$0")/.." || exit 1
MODE="${1:---all}" SRC="README.adoc"
HTML_OUT="README.html" MODE="--all"
PDF_OUT="README.pdf"
for arg in "$@"; do
case "$arg" in
--html|--pdf|--all)
MODE="$arg"
;;
-h|--help)
sed -n '2,12p' "$0"
exit 0
;;
*.adoc)
SRC="$arg"
;;
*)
echo "Usage: $0 [fichier.adoc] [--html|--pdf|--all]" >&2
exit 1
;;
esac
done
if [[ ! -f "$SRC" ]]; then
echo "Erreur : fichier introuvable : $SRC" >&2
exit 1
fi
BASE="$(basename "$SRC" .adoc)"
HTML_OUT="$BASE.html"
PDF_OUT="$BASE.pdf"
build_html() { build_html() {
asciidoctor -b html5 -a docinfodir=docs -a docinfo=shared README.adoc -o "$1" asciidoctor -b html5 -a docinfodir=docs -a docinfo=shared "$SRC" -o "$1"
echo "HTML generated: $1" echo "HTML generated: $1"
} }
@@ -58,12 +87,4 @@ case "$MODE" in
build_html "$HTML_OUT" build_html "$HTML_OUT"
build_pdf "$HTML_OUT" build_pdf "$HTML_OUT"
;; ;;
-h|--help)
sed -n '2,10p' "$0"
exit 0
;;
*)
echo "Usage: $0 [--html|--pdf|--all]" >&2
exit 1
;;
esac esac