mycopunk-swag/scripts/sync-catalog.sh

86 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# Sync product catalogs from POD providers
#
# Fetches the latest product catalog from Printful and Prodigi
# and caches locally for offline reference.
#
# Usage: ./scripts/sync-catalog.sh [provider]
# Example: ./scripts/sync-catalog.sh printful
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
CACHE_DIR="$PROJECT_DIR/.cache/catalogs"
PROVIDER=${1:-all}
mkdir -p "$CACHE_DIR"
echo "🍄 Syncing POD Catalogs"
echo "======================="
echo ""
sync_printful() {
echo "Syncing Printful catalog..."
if [ -z "$PRINTFUL_API_TOKEN" ]; then
echo " ⚠ PRINTFUL_API_TOKEN not set, skipping"
return
fi
curl -s -H "Authorization: Bearer $PRINTFUL_API_TOKEN" \
"https://api.printful.com/products" \
> "$CACHE_DIR/printful-catalog.json"
count=$(jq '.result | length' "$CACHE_DIR/printful-catalog.json" 2>/dev/null || echo "0")
echo " ✓ Saved $count products to printful-catalog.json"
}
sync_prodigi() {
echo "Syncing Prodigi catalog..."
API_KEY="${PRODIGI_API_KEY_SANDBOX:-$PRODIGI_API_KEY_LIVE}"
if [ -z "$API_KEY" ]; then
echo " ⚠ PRODIGI_API_KEY not set, skipping"
return
fi
curl -s -H "X-API-Key: $API_KEY" \
"https://api.sandbox.prodigi.com/v4.0/products" \
> "$CACHE_DIR/prodigi-catalog.json"
count=$(jq '.products | length' "$CACHE_DIR/prodigi-catalog.json" 2>/dev/null || echo "0")
echo " ✓ Saved $count products to prodigi-catalog.json"
}
# Load environment
if [ -f "$PROJECT_DIR/config/.env" ]; then
export $(cat "$PROJECT_DIR/config/.env" | grep -v '^#' | xargs)
fi
case $PROVIDER in
printful)
sync_printful
;;
prodigi)
sync_prodigi
;;
all)
sync_printful
sync_prodigi
;;
*)
echo "Unknown provider: $PROVIDER"
echo "Usage: $0 [printful|prodigi|all]"
exit 1
;;
esac
echo ""
echo "Catalogs cached in: $CACHE_DIR"
echo ""
echo "View catalogs with:"
echo " jq '.result[] | {id, title}' $CACHE_DIR/printful-catalog.json"
echo " jq '.products[] | {sku, description}' $CACHE_DIR/prodigi-catalog.json"