1313
1414jobs :
1515 build :
16+ name : Build
1617 runs-on : ubuntu-latest
1718 outputs :
1819 zip_path : ${{ steps.discover.outputs.zip_path }}
6061 path : ${{ steps.discover.outputs.algolia_zip }}
6162
6263 deploy-cf :
64+ name : Deploy for CloudFlare Pages
6365 needs : build
6466 runs-on : ubuntu-latest
6567 steps :
@@ -120,6 +122,7 @@ jobs:
120122 gitHubToken : ${{ secrets.GITHUB_TOKEN }}
121123
122124 deploy-gh :
125+ name : Deploy to GitHub Pages
123126 needs : build
124127 runs-on : ubuntu-latest
125128 permissions :
@@ -157,13 +160,15 @@ jobs:
157160 token : ${{ secrets.GITHUB_TOKEN }}
158161
159162 deploy-algolia :
163+ name : Deploy Records to Algolia
160164 needs : build
161165 if : needs.build.outputs.algolia_zip != ''
162166 runs-on : ubuntu-latest
163167 env :
164168 ALGOLIA_APPLICATION_ID : ${{ secrets.ALG_APP_ID }}
165169 ALGOLIA_ADMIN_API_KEY : ${{ secrets.ALG_ADM_API_KEY }}
166170 ALGOLIA_INDEX_NAME : ${{ secrets.ALG_INDEX_NAME }}
171+ PRODUCT : ' 1'
167172
168173 steps :
169174 - uses : actions/checkout@v5
@@ -180,6 +185,43 @@ jobs:
180185 echo "Unzipping ./algolia/$ZIP_NAME into ./algolia"
181186 unzip "./algolia/$ZIP_NAME" -d ./algolia
182187
188+ - name : Patch Algolia JSON files
189+ run : |
190+ set -euo pipefail
191+ cd algolia
192+ SITE_PRODUCT="${SITE_PRODUCT:-1}"
193+ echo "Setting product=\"$SITE_PRODUCT\" for Algolia JSON files (only when missing/empty)."
194+
195+ for f in *.json; do
196+ echo "Processing $f ..."
197+ if jq -e 'type == "array"' "$f" >/dev/null 2>&1; then
198+ jq --arg p "$SITE_PRODUCT" 'map(if (.product == null or .product == "") then . + {product:$p} else . end)' "$f" > "$f.tmp"
199+ mv "$f.tmp" "$f"
200+ elif jq -e 'has("records") and (.records | type == "array")' "$f" >/dev/null 2>&1; then
201+ jq --arg p "$SITE_PRODUCT" '.records = (.records | map(if (.product == null or .product == "") then . + {product:$p} else . end))' "$f" > "$f.tmp"
202+ mv "$f.tmp" "$f"
203+ elif jq -e 'type == "object"' "$f" >/dev/null 2>&1; then
204+ jq --arg p "$SITE_PRODUCT" 'if (.product == null or .product == "") then . + {product:$p} else . end' "$f" > "$f.tmp"
205+ mv "$f.tmp" "$f"
206+ else
207+ echo "Unknown top-level JSON type for $f — attempting NDJSON-per-line patch."
208+ tmp="$(mktemp)"
209+ while IFS= read -r line || [ -n "$line" ]; do
210+ trimmed="$(echo "$line" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
211+ if [ -z "$trimmed" ]; then
212+ echo "" >> "$tmp"
213+ continue
214+ fi
215+ if echo "$trimmed" | jq -e '.' >/dev/null 2>&1; then
216+ echo "$trimmed" | jq -c --arg p "$SITE_PRODUCT" 'if (.product == null or .product == "") then . + {product:$p} else . end' >> "$tmp"
217+ else
218+ echo "$line" >> "$tmp"
219+ fi
220+ done < "$f"
221+ mv "$tmp" "$f"
222+ fi
223+ done
224+
183225 - name : Setup Algolia CLI
184226 uses : algolia/setup-algolia-cli@master
185227
0 commit comments