@@ -30,14 +30,51 @@ jobs:
3030 if : ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }}
3131 steps :
3232 - uses : actions/checkout@v6
33+ with :
34+ fetch-depth : 2
35+
36+ - name : Detect changed paths
37+ id : changes
38+ run : |
39+ if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
40+ echo "generate=true" >> "$GITHUB_OUTPUT"
41+ echo "og=true" >> "$GITHUB_OUTPUT"
42+ elif [[ "${{ github.event_name }}" == "workflow_run" ]]; then
43+ # Generator JAR was rebuilt — regenerate HTML, skip OG
44+ echo "generate=true" >> "$GITHUB_OUTPUT"
45+ echo "og=false" >> "$GITHUB_OUTPUT"
46+ else
47+ # Push event — check which files changed
48+ CHANGED=$(git diff --name-only HEAD~1 HEAD)
49+ echo "Changed files:"
50+ echo "$CHANGED"
51+
52+ NEEDS_GENERATE=false
53+ NEEDS_OG=false
54+
55+ if echo "$CHANGED" | grep -qE '^(content/|translations/|templates/)'; then
56+ NEEDS_GENERATE=true
57+ NEEDS_OG=true
58+ fi
59+ if echo "$CHANGED" | grep -qE '^html-generators/generateog\.java$'; then
60+ NEEDS_OG=true
61+ fi
62+
63+ echo "generate=$NEEDS_GENERATE" >> "$GITHUB_OUTPUT"
64+ echo "og=$NEEDS_OG" >> "$GITHUB_OUTPUT"
65+ fi
66+ echo "Summary: generate=${{ steps.changes.outputs.generate || 'pending' }}, og=${{ steps.changes.outputs.og || 'pending' }}"
3367
3468 - uses : actions/setup-java@v5
69+ if : steps.changes.outputs.generate == 'true' || steps.changes.outputs.og == 'true'
3570 with :
3671 distribution : ' temurin'
3772 java-version : ' 25'
3873
74+ # --- HTML generation (content/templates/translations changed) ---
3975 - name : Restore cached generate JAR and AOT
4076 id : cache-restore
77+ if : steps.changes.outputs.generate == 'true'
4178 uses : actions/cache/restore@v5
4279 with :
4380 path : |
@@ -46,19 +83,21 @@ jobs:
4683 key : generator-${{ hashFiles('html-generators/generate.java') }}
4784
4885 - name : Generate HTML with cached JAR + AOT
49- if : steps.cache-restore.outputs.cache-hit == 'true'
86+ if : steps.changes.outputs.generate == 'true' && steps. cache-restore.outputs.cache-hit == 'true'
5087 run : java -XX:AOTCache=html-generators/generate.aot -jar html-generators/generate.jar
5188
5289 - name : Setup JBang (cache miss)
53- if : steps.cache-restore.outputs.cache-hit != 'true'
90+ if : steps.changes.outputs.generate == 'true' && steps. cache-restore.outputs.cache-hit != 'true'
5491 uses : jbangdev/setup-jbang@main
5592
5693 - name : Generate HTML with JBang (cache miss)
57- if : steps.cache-restore.outputs.cache-hit != 'true'
94+ if : steps.changes.outputs.generate == 'true' && steps. cache-restore.outputs.cache-hit != 'true'
5895 run : jbang html-generators/generate.java
5996
97+ # --- OG card generation (content/templates/translations or generateog.java changed) ---
6098 - name : Restore cached generateog JAR and AOT
6199 id : cache-restore-og
100+ if : steps.changes.outputs.og == 'true'
62101 uses : actions/cache/restore@v5
63102 with :
64103 path : |
@@ -67,11 +106,11 @@ jobs:
67106 key : generateog-${{ hashFiles('html-generators/generateog.java') }}
68107
69108 - name : Generate OG cards with cached JAR + AOT
70- if : steps.cache-restore-og.outputs.cache-hit == 'true'
109+ if : steps.changes.outputs.og == 'true' && steps. cache-restore-og.outputs.cache-hit == 'true'
71110 run : java -XX:AOTCache=html-generators/generateog.aot -jar html-generators/generateog.jar
72111
73112 - name : Generate OG cards with JBang (cache miss)
74- if : steps.cache-restore-og.outputs.cache-hit != 'true'
113+ if : steps.changes.outputs.og == 'true' && steps. cache-restore-og.outputs.cache-hit != 'true'
75114 run : |
76115 if ! command -v jbang &> /dev/null; then
77116 echo "Installing JBang..."
0 commit comments