ukhorsecremations.co.uk/.ddev/share-providers/ngrok.sh
Stewart Walter 08d696985a Site build
2026-05-01 12:28:23 +01:00

50 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
#ddev-generated
# ngrok share provider for DDEV
# Documentation: https://docs.ddev.com/en/stable/users/topics/sharing/
#
# To customize: remove the 'ddev-generated' line above and edit as needed.
# To create a variant: copy to a new file like my-ngrok.sh
set -euo pipefail
# Enable debug output if DDEV_DEBUG or DDEV_VERBOSE is set
if [[ "${DDEV_DEBUG:-}" == "true" ]] || [[ "${DDEV_VERBOSE:-}" == "true" ]]; then
set -x
fi
# Validate ngrok is installed
if ! command -v ngrok >/dev/null 2>&1; then
echo "Error: ngrok not found in PATH. Install from https://ngrok.com/download" >&2
exit 1
fi
# Validate required environment variables
if [[ -z "${DDEV_LOCAL_URL:-}" ]]; then
echo "Error: DDEV_LOCAL_URL not set" >&2
exit 1
fi
# Start ngrok and capture output
echo "Starting ngrok tunnel..." >&2
ARGS="${DDEV_SHARE_ARGS:-}"
echo >&2
echo "Running command: ngrok http $DDEV_LOCAL_URL --log=stdout $ARGS" >&2
echo >&2
URL_FOUND=""
ngrok http "$DDEV_LOCAL_URL" --log=stdout $ARGS 2>&1 | while IFS= read -r line; do
# Look for the tunnel URL in ngrok's structured log output
if [[ -z "$URL_FOUND" ]] && [[ "$line" =~ url=(https://[^[:space:]]+) ]]; then
URL_FOUND="${BASH_REMATCH[1]}"
echo "$URL_FOUND" # Output to stdout - CRITICAL: This is captured by DDEV
fi
# Show non-info output to user (warnings, errors, etc.); show all in verbose mode
if [[ "${DDEV_VERBOSE:-}" == "true" ]] || [[ ! "$line" =~ " lvl=info " ]]; then
echo "$line" >&2
fi
done