#!/usr/bin/env bash current_mode=$(bin/clinotty cat /usr/local/etc/php/php.ini | grep '^xdebug.mode' | cut -d'=' -f2 | tr -d ' ') display_modes() { echo "- off" echo "- develop" echo "- coverage" echo "- debug" echo "- gcstats" echo "- profile" echo "- trace" echo "" printf "You can also combine multiple modes with commas (e.g., develop,trace)\n" } xdebug_set_mode() { local new_mode=$1 # Validate the mode(s) IFS=',' read -ra MODES <<< "$new_mode" for mode in "${MODES[@]}"; do case $mode in off|develop|coverage|debug|gcstats|profile|trace) continue ;; *) printf "Invalid mode: %s\n\n" "$mode" echo "Valid modes are:" display_modes return 1 ;; esac done if [ "$current_mode" = "$new_mode" ]; then echo "Current setting is already: xdebug.mode = $new_mode" return 0 fi bin/root sed -i -e "s/^xdebug\.mode.*$/xdebug.mode = $new_mode/g" /usr/local/etc/php/php.ini bin/cli kill -USR2 1 echo "New setting: xdebug.mode = $new_mode" } if [ -z "$1" ]; then printf "Current setting: xdebug.mode = %s\n\n" "$current_mode" printf "Update it by passing in a valid mode as an argument:\n" display_modes exit 1 fi xdebug_set_mode "$1"