Files

56 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
#ddev-generated
## Description: Turn the headless browser (Playwright MCP) for Claude Code on or off
## Usage: claude-browser [enable|disable|status]
## Example: "ddev claude-browser enable"
set -euo pipefail
TEMPLATE="${DDEV_APPROOT}/.ddev/claude-code/browser/docker-compose.claude-browser.yaml"
TARGET="${DDEV_APPROOT}/.ddev/docker-compose.claude-browser.yaml"
CONTAINER="ddev-${DDEV_SITENAME}-claude-browser"
case "${1:-status}" in
enable|on)
if [ ! -f "${TEMPLATE}" ]; then
echo "Missing ${TEMPLATE}; reinstall the add-on with 'ddev add-on get'." >&2
exit 1
fi
if [ -f "${TARGET}" ]; then
echo "The headless browser is already enabled (.ddev/docker-compose.claude-browser.yaml)."
exit 0
fi
cp "${TEMPLATE}" "${TARGET}"
echo "Enabled the headless browser; restarting so the claude-browser service starts ..."
ddev restart
;;
disable|off)
if [ ! -f "${TARGET}" ]; then
echo "The headless browser is not enabled."
exit 0
fi
if ! grep -q '#ddev-generated' "${TARGET}"; then
echo "${TARGET} has been customised (no #ddev-generated line); delete it yourself and run 'ddev restart'." >&2
exit 1
fi
rm -f "${TARGET}"
echo "Disabled the headless browser; restarting so the claude-browser service stops ..."
ddev restart
;;
status)
if [ -f "${TARGET}" ]; then
state="enabled"
else
state="disabled"
fi
running="unknown"
if command -v docker >/dev/null 2>&1; then
running="$(docker inspect -f '{{.State.Status}}' "${CONTAINER}" 2>/dev/null || echo "not running")"
fi
echo "Headless browser: ${state} (container ${CONTAINER}: ${running})"
;;
*)
echo "Usage: ddev claude-browser [enable|disable|status]" >&2
exit 2
;;
esac