|
42 | 42 | else |
43 | 43 | REV_HUMAN_DATE="$(date -u '+%B %-d, %Y')" |
44 | 44 | 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 |
45 | 49 | { |
46 | 50 | echo "REV_DATE=$REV_DATE" |
47 | 51 | echo "REV_NUMBER=$VERSION" |
|
58 | 62 | GENERATED_PNG="docs/developer-guide/book-cover.generated.png" |
59 | 63 | cp "$SOURCE" "$GENERATED_SVG" |
60 | 64 | 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 |
62 | 104 | rsvg-convert -w 2551 -h 3579 "$GENERATED_SVG" -o "$GENERATED_PNG" |
| 105 | + ls -l "$GENERATED_PNG" |
| 106 | + file "$GENERATED_PNG" |
63 | 107 | { |
64 | 108 | echo "COVER_IMAGE_ATTR=$(basename "$GENERATED_PNG")" |
65 | 109 | echo "GENERATED_COVER_IMAGE=$GENERATED_PNG" |
|
85 | 129 | COVER_IMAGE_ATTR_VALUE="${COVER_IMAGE_ATTR:-book-cover.svg}" |
86 | 130 | GENERATED_COVER_IMAGE="${GENERATED_COVER_IMAGE:-}" |
87 | 131 | GENERATED_COVER_SVG="${GENERATED_COVER_SVG:-}" |
| 132 | + echo "Building with cover image attribute: ${COVER_IMAGE_ATTR_VALUE}" >&2 |
88 | 133 | mkdir -p "$HTML_BUILD_DIR" "$PDF_BUILD_DIR" |
89 | 134 | asciidoctor \ |
90 | 135 | -a revdate="$REV_DATE" \ |
|
0 commit comments