#!/usr/bin/env bash set -e cd "$(dirname "$0")/.." if [[ -n "$1" && "$1" != '--'* ]]; then URL="$1" shift elif [ -n "$STAINLESS_OPENAPI_SPEC_URL" ]; then URL="$STAINLESS_OPENAPI_SPEC_URL" else # Embedded OpenAPI spec (base64-encoded, gzipped) EMBEDDED_SPEC="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" SPEC_TMPFILE="$(mktemp)" trap 'rm -f "$SPEC_TMPFILE"' EXIT echo "$EMBEDDED_SPEC" | base64 --decode | gunzip > "$SPEC_TMPFILE" URL="$SPEC_TMPFILE" fi echo "==> Starting mock server with URL ${URL}" # Run steady mock on the given spec if [ "$1" == "--daemon" ]; then # Pre-install the package so the download doesn't eat into the startup timeout npm exec --package=@stdy/cli@0.22.1 -- steady --version npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log & # Wait for server to come online via health endpoint (max 30s) echo -n "Waiting for server" attempts=0 while ! curl --silent --fail "http://127.0.0.1:4010/_x-steady/health" >/dev/null 2>&1; do if ! kill -0 $! 2>/dev/null; then echo cat .stdy.log exit 1 fi attempts=$((attempts + 1)) if [ "$attempts" -ge 300 ]; then echo echo "Timed out waiting for Steady server to start" cat .stdy.log exit 1 fi echo -n "." sleep 0.1 done echo else npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" fi