50 lines
1.5 KiB
Bash
Executable File
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
|