Skip to content

Commit bf76cd1

Browse files
committed
Fix developer guide cover rasterization
1 parent 5533c1a commit bf76cd1

File tree

1 file changed

+46
-1
lines changed

1 file changed

+46
-1
lines changed

.github/workflows/developer-guide-docs.yml

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ jobs:
4242
else
4343
REV_HUMAN_DATE="$(date -u '+%B %-d, %Y')"
4444
fi
45+
echo "Developer guide workflow metadata:" >&2
46+
echo " REV_DATE=$REV_DATE" >&2
47+
echo " REV_NUMBER=$VERSION" >&2
48+
echo " REV_HUMAN_DATE=$REV_HUMAN_DATE" >&2
4549
{
4650
echo "REV_DATE=$REV_DATE"
4751
echo "REV_NUMBER=$VERSION"
@@ -58,8 +62,48 @@ jobs:
5862
GENERATED_PNG="docs/developer-guide/book-cover.generated.png"
5963
cp "$SOURCE" "$GENERATED_SVG"
6064
export GENERATED_SVG
61-
python3 -c "import os, re, pathlib; target = pathlib.Path(os.environ['GENERATED_SVG']); text = target.read_text(encoding='utf-8'); rev = os.environ.get('REV_NUMBER', 'UNKNOWN'); date = os.environ.get('REV_HUMAN_DATE') or os.environ.get('REV_DATE', ''); replacement = f\"Version {rev}\" + (f\" - {date}\" if date else ''); new_text, count = re.subn(r'Version\\s+[^<]+', replacement.strip(), text, count=1); assert count == 1, 'Could not find version text placeholder in cover artwork'; target.write_text(new_text, encoding='utf-8')"
65+
python3 - <<'PY'
66+
import os
67+
import pathlib
68+
import re
69+
70+
target = pathlib.Path(os.environ['GENERATED_SVG'])
71+
text = target.read_text(encoding='utf-8')
72+
73+
rev = os.environ.get('REV_NUMBER', 'UNKNOWN')
74+
date = os.environ.get('REV_HUMAN_DATE') or os.environ.get('REV_DATE', '')
75+
replacement = f"Version {rev}" + (f" - {date}" if date else '')
76+
77+
new_text, count = re.subn(r'Version\s+[^<]+', replacement.strip(), text, count=1)
78+
if count != 1:
79+
raise RuntimeError('Could not find version text placeholder in cover artwork')
80+
81+
variables = {
82+
name: value.strip()
83+
for name, value in re.findall(r'--([\w-]+):\s*([^;]+);', new_text)
84+
}
85+
86+
var_counter = {'count': 0}
87+
88+
def replace_var(match):
89+
name = match.group(1)
90+
value = variables.get(name)
91+
if value is None:
92+
return match.group(0)
93+
var_counter['count'] += 1
94+
return value
95+
96+
new_text = re.sub(r'var\(--([\w-]+)\)', replace_var, new_text)
97+
98+
target.write_text(new_text, encoding='utf-8')
99+
100+
print(f"Injected cover legend: {replacement.strip()}")
101+
print(f"Resolved {var_counter['count']} CSS variable references for rasterization")
102+
PY
103+
echo "Rasterizing cover artwork to ${GENERATED_PNG}" >&2
62104
rsvg-convert -w 2551 -h 3579 "$GENERATED_SVG" -o "$GENERATED_PNG"
105+
ls -l "$GENERATED_PNG"
106+
file "$GENERATED_PNG"
63107
{
64108
echo "COVER_IMAGE_ATTR=$(basename "$GENERATED_PNG")"
65109
echo "GENERATED_COVER_IMAGE=$GENERATED_PNG"
@@ -85,6 +129,7 @@ jobs:
85129
COVER_IMAGE_ATTR_VALUE="${COVER_IMAGE_ATTR:-book-cover.svg}"
86130
GENERATED_COVER_IMAGE="${GENERATED_COVER_IMAGE:-}"
87131
GENERATED_COVER_SVG="${GENERATED_COVER_SVG:-}"
132+
echo "Building with cover image attribute: ${COVER_IMAGE_ATTR_VALUE}" >&2
88133
mkdir -p "$HTML_BUILD_DIR" "$PDF_BUILD_DIR"
89134
asciidoctor \
90135
-a revdate="$REV_DATE" \

0 commit comments

Comments
 (0)