@@ -31,43 +31,37 @@ jobs:
3131 contents : read
3232 pull-requests : read
3333 outputs :
34- auto-sizes : ${{ steps.filter.outputs.auto-sizes }}
35- dominant-color-images : ${{ steps.filter.outputs.dominant-color-images }}
36- embed-optimizer : ${{ steps.filter.outputs.embed-optimizer }}
37- image-prioritizer : ${{ steps.filter.outputs.image-prioritizer }}
38- optimization-detective : ${{ steps.filter.outputs.optimization-detective }}
39- performance-lab : ${{ steps.filter.outputs.performance-lab }}
40- speculation-rules : ${{ steps.filter.outputs.speculation-rules }}
41- view-transitions : ${{ steps.filter.outputs.view-transitions }}
42- web-worker-offloading : ${{ steps.filter.outputs.web-worker-offloading }}
43- webp-uploads : ${{ steps.filter.outputs.webp-uploads }}
34+ changed-plugins : ${{ steps.filter-plugins.outputs.changed-plugins }}
4435 steps :
4536 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
4637
38+ - name : Generate filters from plugins.json
39+ id : generate-filters
40+ run : |
41+ FILTERS=""
42+ for plugin in $(jq -r '.plugins[]' plugins.json); do
43+ FILTERS="${FILTERS}${plugin}:\n - 'plugins/${plugin}/**'\n"
44+ done
45+ echo "$FILTERS" > /tmp/filters.yml
46+ cat /tmp/filters.yml
47+
4748 - uses : dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
4849 id : filter
4950 with :
50- filters : |
51- auto-sizes:
52- - 'plugins/auto-sizes/**'
53- dominant-color-images:
54- - 'plugins/dominant-color-images/**'
55- embed-optimizer:
56- - 'plugins/embed-optimizer/**'
57- image-prioritizer:
58- - 'plugins/image-prioritizer/**'
59- optimization-detective:
60- - 'plugins/optimization-detective/**'
61- performance-lab:
62- - 'plugins/performance-lab/**'
63- speculation-rules:
64- - 'plugins/speculation-rules/**'
65- view-transitions:
66- - 'plugins/view-transitions/**'
67- web-worker-offloading:
68- - 'plugins/web-worker-offloading/**'
69- webp-uploads:
70- - 'plugins/webp-uploads/**'
51+ filters : /tmp/filters.yml
52+
53+ - name : Collect changed plugins
54+ id : filter-plugins
55+ run : |
56+ CHANGED_PLUGINS="[]"
57+ for plugin in $(jq -r '.plugins[]' plugins.json); do
58+ OUTPUT_KEY=$(echo "$plugin" | tr '-' '_')
59+ FILTER_OUTPUT="${{ toJson(steps.filter.outputs) }}"
60+ if echo "$FILTER_OUTPUT" | jq -e ".[\"$OUTPUT_KEY\"] == \"true\"" > /dev/null; then
61+ CHANGED_PLUGINS=$(echo "$CHANGED_PLUGINS" | jq -c --arg p "$plugin" '. + [$p]')
62+ fi
63+ done
64+ echo "changed-plugins=$CHANGED_PLUGINS" >> $GITHUB_OUTPUT
7165
7266 prepare-matrix :
7367 needs : [detect-changes]
@@ -115,20 +109,8 @@ jobs:
115109 exit 0
116110 fi
117111
118- # For PRs, filter to only changed plugins
119- CHANGED_PLUGINS="[]"
120- for plugin in $(echo "$ALL_PLUGINS" | jq -r '.[]'); do
121- # Convert plugin name with hyphens to underscores for output key
122- OUTPUT_KEY=$(echo "$plugin" | tr '-' '_')
123- CHANGED="${{ toJson(needs.detect-changes.outputs) }}"
124-
125- # Check if this plugin has changes
126- if echo "$CHANGED" | jq -e ".[\"$OUTPUT_KEY\"] == \"true\"" > /dev/null; then
127- CHANGED_PLUGINS=$(echo "$CHANGED_PLUGINS" | jq -c --arg p "$plugin" '. + [$p]')
128- fi
129- done
130-
131- # If no plugins changed, output empty array
112+ # For PRs, use the changed plugins from detect-changes
113+ CHANGED_PLUGINS="${{ needs.detect-changes.outputs.changed-plugins }}"
132114 echo "plugins=$CHANGED_PLUGINS" >> $GITHUB_OUTPUT
133115
134116 plugin-check :
0 commit comments