|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +# Configuration - modify these values for your setup |
| 5 | +ENV_SLUG="demo15" |
| 6 | +ENV_NAME="demo15" |
| 7 | +SITE_ID="RefArch" |
| 8 | +TENANT_ID="zzpq_013" |
| 9 | +ORGANIZATION_ID="f_ecom_zzsa_009" |
| 10 | +SHORT_CODE="kv7kzm78" |
| 11 | +BUILD_PATH="${BUILD_PATH:-$HOME/code/SFCC-Odyssey/packages/template-retail-rsc-app/build}" |
| 12 | + |
| 13 | +export SFCC_MRT_PROJECT="${SFCC_MRT_PROJECT:-cli}" |
| 14 | + |
| 15 | +echo "=== Step 1: Creating MRT environment ===" |
| 16 | +ENV_JSON=$(b2c mrt env create "$ENV_SLUG" --name "$ENV_NAME" --json) |
| 17 | +echo "Environment created." |
| 18 | + |
| 19 | +# Extract the external hostname for the callback URL |
| 20 | +SSR_EXTERNAL_HOSTNAME=$(echo "$ENV_JSON" | jq -r '.ssr_external_hostname // empty') |
| 21 | +if [[ -z "$SSR_EXTERNAL_HOSTNAME" ]]; then |
| 22 | + # Fall back to hostname if external hostname not set |
| 23 | + SSR_EXTERNAL_HOSTNAME=$(echo "$ENV_JSON" | jq -r '.hostname // empty') |
| 24 | +fi |
| 25 | + |
| 26 | +if [[ -z "$SSR_EXTERNAL_HOSTNAME" ]]; then |
| 27 | + echo "Warning: Could not determine external hostname from environment. Using localhost." |
| 28 | + CALLBACK_URL="http://localhost:3000/callback" |
| 29 | +else |
| 30 | + CALLBACK_URL="https://${SSR_EXTERNAL_HOSTNAME}/callback" |
| 31 | +fi |
| 32 | +echo "Callback URL: $CALLBACK_URL" |
| 33 | + |
| 34 | +echo "" |
| 35 | +echo "=== Step 2: Creating SLAS client ===" |
| 36 | +SLAS_JSON=$(b2c slas client create --channels "$SITE_ID" \ |
| 37 | + --redirect-uri "$CALLBACK_URL" \ |
| 38 | + --default-scopes \ |
| 39 | + --tenant-id "$TENANT_ID" \ |
| 40 | + --json) |
| 41 | +echo "SLAS client created." |
| 42 | + |
| 43 | +# Extract client ID and secret from SLAS response |
| 44 | +CLIENT_ID=$(echo "$SLAS_JSON" | jq -r '.clientId') |
| 45 | +CLIENT_SECRET=$(echo "$SLAS_JSON" | jq -r '.secret // empty') |
| 46 | + |
| 47 | +if [[ -z "$CLIENT_ID" ]]; then |
| 48 | + echo "Error: Failed to get client ID from SLAS response" |
| 49 | + exit 1 |
| 50 | +fi |
| 51 | + |
| 52 | +echo "Client ID: $CLIENT_ID" |
| 53 | +if [[ -n "$CLIENT_SECRET" ]]; then |
| 54 | + echo "Client Secret: $CLIENT_SECRET (save this - it won't be shown again)" |
| 55 | +fi |
| 56 | + |
| 57 | +echo "" |
| 58 | +echo "=== Step 3: Setting environment variables ===" |
| 59 | +b2c mrt env var set -e "$ENV_SLUG" \ |
| 60 | + "PUBLIC__app__commerce__api__clientId=$CLIENT_ID" \ |
| 61 | + "PUBLIC__app__commerce__api__organizationId=$ORGANIZATION_ID" \ |
| 62 | + "PUBLIC__app__commerce__api__siteId=$SITE_ID" \ |
| 63 | + "PUBLIC__app__commerce__api__shortCode=$SHORT_CODE" \ |
| 64 | + "PUBLIC__app__commerce__api__proxy=/mobify/proxy/api" \ |
| 65 | + "PUBLIC__app__commerce__api__callback=$CALLBACK_URL" \ |
| 66 | + "PUBLIC__app__commerce__api__privateKeyEnabled=true" \ |
| 67 | + ${CLIENT_SECRET:+"COMMERCE_API_SLAS_SECRET=$CLIENT_SECRET"} |
| 68 | + |
| 69 | +echo "" |
| 70 | +echo "=== Step 4: Deploying code ===" |
| 71 | +b2c code deploy |
| 72 | + |
| 73 | +echo "" |
| 74 | +echo "=== Step 5: Importing job data ===" |
| 75 | +b2c job import data/urls |
| 76 | + |
| 77 | +echo "" |
| 78 | +echo "=== Step 6: Pushing to MRT ===" |
| 79 | +b2c mrt push -e "$ENV_SLUG" -b "$BUILD_PATH" |
| 80 | + |
| 81 | +echo "" |
| 82 | +echo "=== Setup Complete ===" |
| 83 | +echo "Environment: $ENV_SLUG" |
| 84 | +echo "Client ID: $CLIENT_ID" |
| 85 | +echo "URL: https://${SSR_EXTERNAL_HOSTNAME:-localhost:3000}" |
0 commit comments