Skip to content

Commit daa67d4

Browse files
Copilotwestonruter
andcommitted
Refactor to generate filters dynamically from plugins.json
- Remove hardcoded plugin list from workflow - Generate paths-filter configuration from plugins.json - Simplify outputs to single changed-plugins list - Reduce duplication and improve maintainability Co-authored-by: westonruter <134745+westonruter@users.noreply.github.com>
1 parent 012ad1b commit daa67d4

File tree

1 file changed

+27
-45
lines changed

1 file changed

+27
-45
lines changed

.github/workflows/plugin-check.yml

Lines changed: 27 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)