← back to Dw Theme Patches

TK-12166/_lib.sh

23 lines

# Shared helpers for TK-12166 deploy/restore. Sourced, not executed.
set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SHOP="designer-laboratory-sandbox.myshopify.com"; API="2024-10"; THEME_ID="145556635699"
KEY="snippets/product-description-meta.liquid"
TOK="$(grep -E '^SHOPIFY_ADMIN_TOKEN=' "$HOME/Projects/secrets-manager/.env" | cut -d= -f2- | tr -d '"')"
[ -n "$TOK" ] || { echo "ABORT: SHOPIFY_ADMIN_TOKEN not found" >&2; exit 1; }
BASE="https://$SHOP/admin/api/$API/themes/$THEME_ID/assets.json"
sha_of() { shasum -a 256 "$1" | cut -d' ' -f1; }
# Fetch live asset value to $1 byte-exact (same method used to take the backup).
fetch_live() {
  curl -fsS -G -H "X-Shopify-Access-Token: $TOK" "$BASE" --data-urlencode "asset[key]=$KEY" \
  | python3 -c "import sys,json;open(sys.argv[1],'w').write(json.load(sys.stdin)['asset']['value'])" "$1"
}
# PUT file $1 as the asset value; asserts HTTP 200.
put_asset() {
  local body code; body="$(mktemp)"
  python3 -c "import sys,json;print(json.dumps({'asset':{'key':sys.argv[2],'value':open(sys.argv[1]).read()}}))" "$1" "$KEY" > "$body"
  code="$(curl -sS -o "$body.out" -w '%{http_code}' -X PUT -H "X-Shopify-Access-Token: $TOK" -H 'Content-Type: application/json' --data-binary @"$body" "$BASE")"
  if [ "$code" != "200" ]; then echo "ABORT: PUT returned HTTP $code"; cat "$body.out"; rm -f "$body" "$body.out"; exit 1; fi
  rm -f "$body" "$body.out"
}