Skip to content

Commit 002c3c6

Browse files
committed
Algolia patches
Signed-off-by: FooterManDev <footerman.work@gmail.com>
1 parent 5551932 commit 002c3c6

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

.github/workflows/build-docs.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ env:
1313

1414
jobs:
1515
build:
16+
name: Build
1617
runs-on: ubuntu-latest
1718
outputs:
1819
zip_path: ${{ steps.discover.outputs.zip_path }}
@@ -60,6 +61,7 @@ jobs:
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

Comments
 (0)