2
0

xdebug 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env bash
  2. current_mode=$(bin/clinotty cat /usr/local/etc/php/php.ini | grep '^xdebug.mode' | cut -d'=' -f2 | tr -d ' ')
  3. display_modes() {
  4. echo "- off"
  5. echo "- develop"
  6. echo "- coverage"
  7. echo "- debug"
  8. echo "- gcstats"
  9. echo "- profile"
  10. echo "- trace"
  11. echo ""
  12. printf "You can also combine multiple modes with commas (e.g., develop,trace)\n"
  13. }
  14. xdebug_set_mode() {
  15. local new_mode=$1
  16. # Validate the mode(s)
  17. IFS=',' read -ra MODES <<< "$new_mode"
  18. for mode in "${MODES[@]}"; do
  19. case $mode in
  20. off|develop|coverage|debug|gcstats|profile|trace)
  21. continue
  22. ;;
  23. *)
  24. printf "Invalid mode: %s\n\n" "$mode"
  25. echo "Valid modes are:"
  26. display_modes
  27. return 1
  28. ;;
  29. esac
  30. done
  31. if [ "$current_mode" = "$new_mode" ]; then
  32. echo "Current setting is already: xdebug.mode = $new_mode"
  33. return 0
  34. fi
  35. bin/root sed -i -e "s/^xdebug\.mode.*$/xdebug.mode = $new_mode/g" /usr/local/etc/php/php.ini
  36. bin/cli kill -USR2 1
  37. echo "New setting: xdebug.mode = $new_mode"
  38. }
  39. if [ -z "$1" ]; then
  40. printf "Current setting: xdebug.mode = %s\n\n" "$current_mode"
  41. printf "Update it by passing in a valid mode as an argument:\n"
  42. display_modes
  43. exit 1
  44. fi
  45. xdebug_set_mode "$1"