← back to Koroseal Goodrich Audit
phase1.sh
32 lines
#!/bin/bash
# Phase 1: reactivate 87 archived-but-current Koroseal (DWK canonical). Activate + ensure image
# (add de-thumbnailed Goodrich image only if ours missing) + Size:Sample @ $4.25 + publish.
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"
RUN=~/Projects/koroseal-goodrich-audit/phase1_run.tsv
put(){ curl -s -o /tmp/p1.json -w "%{http_code}" -X PUT "$BASE/products/$1.json" -H "$H" -H "Content-Type: application/json" -d "$2"; }
while IFS=$'\t' read -r mfr pid dwsku has img; do
[ -z "${pid:-}" ] && continue
put "$pid" "{\"product\":{\"id\":$pid,\"status\":\"active\"}}" >/dev/null
# image only if missing
if [ "$has" != "t" ]; then
full=$(echo "$img" | sed -E 's/-[0-9]+x[0-9]+\.jpg$/.jpg/')
code=$(curl -s -o /dev/null -w "%{http_code}" -I "$full"); [ "$code" != "200" ] && full="$img"
curl -s -X POST "$BASE/products/$pid/images.json" -H "$H" -H "Content-Type: application/json" \
-d "{\"image\":{\"src\":\"$full\",\"position\":1,\"alt\":\"$mfr Koroseal wallcovering\"}}" >/dev/null
imgnote="+img"
else imgnote="hasimg"; fi
# variant -> Size:Sample @ 4.25
read -r optid varid < <(curl -s "$BASE/products/$pid.json?fields=options,variants" -H "$H" | python3 -c 'import sys,json;p=json.load(sys.stdin)["product"];print(p["options"][0]["id"],p["variants"][0]["id"])')
vbody=$(python3 -c "import json;print(json.dumps({'product':{'id':$pid,'options':[{'id':$optid,'name':'Size'}],'variants':[{'id':$varid,'option1':'Sample','price':'4.25','sku':'$dwsku-Sample','inventory_management':'shopify','inventory_policy':'continue','taxable':True,'requires_shipping':True}]}}))")
vr=$(put "$pid" "$vbody")
# publish Online Store
pr=$(put "$pid" "{\"product\":{\"id\":$pid,\"published\":true,\"published_scope\":\"global\"}}")
vc=$(python3 -c 'import json;v=json.load(open("/tmp/p1.json")).get("product",{}).get("variants",[{}])[0];print(v.get("price"),v.get("sku"))' 2>/dev/null)
echo "[$mfr] $imgnote variantHTTP=$vr publishHTTP=$pr -> $vc"
sleep 0.7
done < "$RUN"
echo "PHASE1 DONE"