← back to Koroseal Goodrich Audit
spec_fix.sh
40 lines
#!/bin/bash
# FIX 5 false-positive spec matches: delete wrongly-written custom specs; re-write from correct prefix-series.
set -uo pipefail
TOKEN="$(grep '^SHOPIFY_ADMIN_TOKEN=' ~/Projects/secrets-manager/.env | cut -d= -f2)"
BASE="https://designer-laboratory-sandbox.myshopify.com/admin/api/2024-10"; H="X-Shopify-Access-Token: $TOKEN"
SPECKEYS="material backing pattern_match fire_rating roll_width horizontal_repeat vertical_repeat designer"
# pid|correct-series (empty = leave deleted/empty for review)
TARGETS="7584945700915|grande
7585016119347|
7519958728755|
7584894877747|coney
7584918503475|niwa"
mk(){ case "$1" in material) echo multi_line_text_field;; *) echo single_line_text_field;; esac; }
label_for(){ case "$1" in material) echo Material;; backing) echo Backing;; pattern_match) echo "Pattern Match";; fire_rating) echo "Fire Rating";; roll_width) echo "Roll Width";; horizontal_repeat) echo "Horizontal Repeat";; vertical_repeat) echo "Vertical Repeat";; designer) echo Designer;; esac; }
echo "$TARGETS" | while IFS='|' read -r pid series; do
[ -z "$pid" ] && continue
# 1) delete the wrongly-written spec metafields
curl -s "$BASE/products/$pid/metafields.json?namespace=custom" -H "$H" | python3 -c '
import sys,json
keys=set("'"$SPECKEYS"'".split())
for m in json.load(sys.stdin).get("metafields",[]):
if m["key"] in keys: print(m["id"])' | while read -r mid; do
curl -s -o /dev/null -w "" -X DELETE "$BASE/metafields/$mid.json" -H "$H"; sleep 0.2
done
echo "[$pid] deleted wrong specs${series:+ ; re-writing from '$series'}"
# 2) re-write from correct series if provided
if [ -n "$series" ]; then
spec=$(python3 -c "import json;print(json.dumps(json.load(open('kor_series2spec.json')).get('$series',{})))")
for k in $SPECKEYS; do
lbl=$(label_for "$k"); val=$(echo "$spec" | python3 -c "import sys,json;print(json.load(sys.stdin).get('$lbl',''))")
[ -z "$val" ] && continue
body=$(python3 -c "import json,sys;print(json.dumps({'metafield':{'namespace':'custom','key':'$k','type':'$(mk $k)','value':sys.argv[1]}}))" "$val")
curl -s -o /dev/null -w "" -X POST "$BASE/products/$pid/metafields.json" -H "$H" -H "Content-Type: application/json" -d "$body"; sleep 0.2
done
echo "[$pid] re-wrote from $series"
fi
sleep 0.3
done
echo "SPEC-FIX DONE"