86 lines
2.2 KiB
Bash
Executable File
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"
|