@@ -21,23 +21,59 @@ jobs:
2121 - name : Check out repository
2222 uses : actions/checkout@v4
2323
24- - name : Update publication metadata for release
25- if : ${{ github.event_name == 'release' && github.event.action == 'published' }}
26- env :
27- RELEASE_TAG : ${{ github.event.release.tag_name }}
24+ - name : Determine publication metadata
2825 run : |
2926 set -euo pipefail
3027 REV_DATE="$(date -u +%Y-%m-%d)"
31- VERSION="${RELEASE_TAG :-}"
28+ VERSION="${GITHUB_HEAD_REF :-}"
3229 if [ -z "$VERSION" ] && [ -n "${GITHUB_REF_NAME:-}" ]; then
3330 VERSION="$GITHUB_REF_NAME"
3431 fi
32+ if [ -z "$VERSION" ] && [ -n "${GITHUB_SHA:-}" ]; then
33+ VERSION="${GITHUB_SHA:0:7}"
34+ fi
3535 VERSION="${VERSION#v}"
3636 if [ -z "$VERSION" ]; then
3737 VERSION="UNKNOWN"
3838 fi
39- sed -i -E "s/^:revdate: .*/:revdate: ${REV_DATE}/" docs/developer-guide/developer-guide.asciidoc
40- sed -i -E "s/^:revnumber: .*/:revnumber: ${VERSION}/" docs/developer-guide/developer-guide.asciidoc
39+ if date -u -d "$REV_DATE" '+%B %-d, %Y' >/tmp/rev_human 2>/dev/null; then
40+ REV_HUMAN_DATE="$(cat /tmp/rev_human)"
41+ else
42+ REV_HUMAN_DATE="$(date -u '+%B %-d, %Y')"
43+ fi
44+ {
45+ echo "REV_DATE=$REV_DATE"
46+ echo "REV_NUMBER=$VERSION"
47+ echo "REV_HUMAN_DATE=$REV_HUMAN_DATE"
48+ } >> "$GITHUB_ENV"
49+
50+ - name : Render publication cover artwork
51+ run : |
52+ set -euo pipefail
53+ SOURCE="docs/developer-guide/book-cover.svg"
54+ GENERATED="docs/developer-guide/book-cover.generated.svg"
55+ cp "$SOURCE" "$GENERATED"
56+ export GENERATED
57+ python - <<'PY'
58+ import os
59+ import re
60+ from pathlib import Path
61+
62+ target = Path(os.environ["GENERATED"])
63+ rev = os.environ.get("REV_NUMBER", "UNKNOWN")
64+ date = os.environ.get("REV_HUMAN_DATE", os.environ.get("REV_DATE", ""))
65+ replacement = f"Version {rev} - {date}".strip()
66+ text = target.read_text(encoding="utf-8")
67+ pattern = re.compile(r"Version\s+[^<]+")
68+ if not pattern.search(text) :
69+ raise SystemExit("Could not find version text placeholder in cover artwork")
70+ text = pattern.sub(replacement, text, count=1)
71+ target.write_text(text, encoding="utf-8")
72+ PY
73+ {
74+ echo "COVER_SVG_ATTR=$(basename "$GENERATED")"
75+ echo "GENERATED_COVER_PATH=$GENERATED"
76+ } >> "$GITHUB_ENV"
4177
4278 - name : Set up Ruby
4379 uses : ruby/setup-ruby@v1
@@ -55,19 +91,44 @@ jobs:
5591 HTML_BUILD_DIR="${OUTPUT_ROOT}/html"
5692 PDF_BUILD_DIR="${OUTPUT_ROOT}/pdf"
5793 PACKAGE_DIR="${OUTPUT_ROOT}/html-package"
94+ COVER_SVG_ATTR_VALUE="${COVER_SVG_ATTR:-book-cover.svg}"
95+ GENERATED_COVER_PATH="${GENERATED_COVER_PATH:-}"
5896 mkdir -p "$HTML_BUILD_DIR" "$PDF_BUILD_DIR"
59- asciidoctor -D "$HTML_BUILD_DIR" -o developer-guide.html docs/developer-guide/developer-guide.asciidoc
60- asciidoctor-pdf -D "$PDF_BUILD_DIR" -o developer-guide.pdf docs/developer-guide/developer-guide.asciidoc
97+ asciidoctor \
98+ -a revdate="$REV_DATE" \
99+ -a revnumber="$REV_NUMBER" \
100+ -a cover-svg="$COVER_SVG_ATTR_VALUE" \
101+ -D "$HTML_BUILD_DIR" \
102+ -o developer-guide.html \
103+ docs/developer-guide/developer-guide.asciidoc
104+ asciidoctor-pdf \
105+ -a revdate="$REV_DATE" \
106+ -a revnumber="$REV_NUMBER" \
107+ -a cover-svg="$COVER_SVG_ATTR_VALUE" \
108+ -D "$PDF_BUILD_DIR" \
109+ -o developer-guide.pdf \
110+ docs/developer-guide/developer-guide.asciidoc
61111 rm -rf "$PACKAGE_DIR"
62112 mkdir -p "$PACKAGE_DIR"
113+ if [ -n "$GENERATED_COVER_PATH" ] && [ -f "$GENERATED_COVER_PATH" ]; then
114+ cp "$GENERATED_COVER_PATH" "$HTML_BUILD_DIR/$(basename "$GENERATED_COVER_PATH")"
115+ fi
63116 cp "$HTML_BUILD_DIR/developer-guide.html" "$PACKAGE_DIR/"
64117 for asset_dir in docs/developer-guide/*; do
65118 base_name="$(basename "$asset_dir")"
66119 if [ -d "$asset_dir" ] && [ "$base_name" != "sketch" ]; then
67120 cp -R "$asset_dir" "$PACKAGE_DIR/"
68121 fi
69122 done
123+ if [ -n "$GENERATED_COVER_PATH" ] && [ -f "$GENERATED_COVER_PATH" ]; then
124+ cp "$GENERATED_COVER_PATH" "$PACKAGE_DIR/$(basename "$GENERATED_COVER_PATH")"
125+ elif [ -f docs/developer-guide/book-cover.svg ]; then
126+ cp docs/developer-guide/book-cover.svg "$PACKAGE_DIR/"
127+ fi
70128 (cd "$PACKAGE_DIR" && zip -r "../developer-guide-html.zip" .)
129+ if [ -n "$GENERATED_COVER_PATH" ] && [ -f "$GENERATED_COVER_PATH" ]; then
130+ rm -f "$GENERATED_COVER_PATH"
131+ fi
71132
72133 - name : Upload HTML artifact
73134 uses : actions/upload-artifact@v4
0 commit comments