Skip to content

Commit a32862a

Browse files
authored
Merge pull request #123 from javaevolved/og-svg-card-generator
Add OG social preview SVG card generator
2 parents 3d4e3f4 + a1df38b commit a32862a

File tree

6 files changed

+477
-8
lines changed

6 files changed

+477
-8
lines changed

.github/workflows/build-generator.yml

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
name: Build Generator JAR
1+
name: Build Generator JARs
22

33
on:
44
push:
55
branches: [main]
66
paths:
77
- '.github/workflows/build-generator.yml'
88
- 'html-generators/generate.java'
9+
- 'html-generators/generateog.java'
910
schedule:
1011
- cron: '0 6 * * 1' # every Monday at 06:00 UTC
1112
workflow_dispatch:
@@ -15,7 +16,7 @@ permissions:
1516
actions: write
1617

1718
jobs:
18-
build:
19+
build-generate:
1920
runs-on: ubuntu-latest
2021
steps:
2122
- uses: actions/checkout@v6
@@ -40,3 +41,29 @@ jobs:
4041
html-generators/generate.jar
4142
html-generators/generate.aot
4243
key: generator-${{ hashFiles('html-generators/generate.java') }}
44+
45+
build-generateog:
46+
runs-on: ubuntu-latest
47+
steps:
48+
- uses: actions/checkout@v6
49+
50+
- uses: actions/setup-java@v5
51+
with:
52+
distribution: 'temurin'
53+
java-version: '25'
54+
55+
- uses: jbangdev/setup-jbang@main
56+
57+
- name: Build fat JAR
58+
run: jbang export fatjar --force --output html-generators/generateog.jar html-generators/generateog.java
59+
60+
- name: Build AOT cache
61+
run: java -XX:AOTCacheOutput=html-generators/generateog.aot -jar html-generators/generateog.jar
62+
63+
- name: Save to cache
64+
uses: actions/cache/save@v5
65+
with:
66+
path: |
67+
html-generators/generateog.jar
68+
html-generators/generateog.aot
69+
key: generateog-${{ hashFiles('html-generators/generateog.java') }}

.github/workflows/deploy.yml

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ on:
88
- 'translations/**'
99
- 'templates/**'
1010
- 'site/**'
11+
- 'html-generators/generateog.java'
1112
workflow_run:
12-
workflows: ['Build Generator JAR']
13+
workflows: ['Build Generator JARs']
1314
types: [completed]
1415
branches: [main]
1516
workflow_dispatch:
@@ -35,7 +36,7 @@ jobs:
3536
distribution: 'temurin'
3637
java-version: '25'
3738

38-
- name: Restore cached JAR and AOT
39+
- name: Restore cached generate JAR and AOT
3940
id: cache-restore
4041
uses: actions/cache/restore@v5
4142
with:
@@ -44,18 +45,41 @@ jobs:
4445
html-generators/generate.aot
4546
key: generator-${{ hashFiles('html-generators/generate.java') }}
4647

47-
- name: Generate with cached JAR + AOT
48+
- name: Generate HTML with cached JAR + AOT
4849
if: steps.cache-restore.outputs.cache-hit == 'true'
4950
run: java -XX:AOTCache=html-generators/generate.aot -jar html-generators/generate.jar
5051

5152
- name: Setup JBang (cache miss)
5253
if: steps.cache-restore.outputs.cache-hit != 'true'
5354
uses: jbangdev/setup-jbang@main
5455

55-
- name: Generate with JBang (cache miss)
56+
- name: Generate HTML with JBang (cache miss)
5657
if: steps.cache-restore.outputs.cache-hit != 'true'
5758
run: jbang html-generators/generate.java
5859

60+
- name: Restore cached generateog JAR and AOT
61+
id: cache-restore-og
62+
uses: actions/cache/restore@v5
63+
with:
64+
path: |
65+
html-generators/generateog.jar
66+
html-generators/generateog.aot
67+
key: generateog-${{ hashFiles('html-generators/generateog.java') }}
68+
69+
- name: Generate OG cards with cached JAR + AOT
70+
if: steps.cache-restore-og.outputs.cache-hit == 'true'
71+
run: java -XX:AOTCache=html-generators/generateog.aot -jar html-generators/generateog.jar
72+
73+
- name: Generate OG cards with JBang (cache miss)
74+
if: steps.cache-restore-og.outputs.cache-hit != 'true'
75+
run: |
76+
if ! command -v jbang &> /dev/null; then
77+
echo "Installing JBang..."
78+
curl -Ls https://sh.jbang.dev | bash -s - app setup
79+
export PATH="$HOME/.jbang/bin:$PATH"
80+
fi
81+
jbang html-generators/generateog.java
82+
5983
- name: Setup Pages
6084
uses: actions/configure-pages@v5
6185

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,8 @@ html-generators/generate.aot
2626
html-generators/generate.jar
2727
html-generators/generate.jsa
2828
html-generators/generate.classlist
29+
html-generators/generateog.aot
30+
html-generators/generateog.jar
31+
32+
# Generated OG social preview SVGs (built by html-generators/generateog.java)
33+
site/og/

html-generators/generate.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,7 @@ String generateHtml(Templates tpl, Snippet s, Map<String, Snippet> all, Map<Stri
487487
Map.entry("supportBadge", supportBadge(s.supportState(), extraTokens)),
488488
Map.entry("supportBadgeClass", supportBadgeClass(s.supportState())),
489489
Map.entry("canonicalUrl", canonicalUrl),
490+
Map.entry("ogImage", "%s/og/%s/%s.png".formatted(BASE_URL, s.category(), s.slug())),
490491
Map.entry("flatUrl", "%s/%s.html".formatted(BASE_URL, s.slug())),
491492
Map.entry("titleJson", jsonEscape(s.title())), Map.entry("summaryJson", jsonEscape(s.summary())),
492493
Map.entry("categoryDisplayJson", jsonEscape(s.catDisplay())),

0 commit comments

Comments
 (0)