#!/usr/bin/env bash

## #ddev-generated
## Description: Enable or disable xdebug
## Usage: xdebug on|off|enable|disable|true|false|toggle|status
## Example: "ddev xdebug" (default is "on"), "ddev xdebug off", "ddev xdebug on", "ddev xdebug toggle", "ddev xdebug status"
## ExecRaw: false
## Flags: []
## AutocompleteTerms: ["on","off","enable","disable","toggle","status"]

if [ $# -eq 0 ] ; then
  enable_xdebug
  exit
fi

xdebug_version=$(php --version | awk '/Xdebug v/ {print $3}')

get_xdebug_status() {
    case ${xdebug_version} in
    v3*)
      status=$(php -r 'echo ini_get("xdebug.mode");' 2>/dev/null)
      if [[ "${status}" =~ .*"debug".* ]]; then
        echo "1"
      else
        echo "0"
      fi
      ;;
    v2*)
      echo $(php -r 'echo ini_get("xdebug.remote_enable");')
      ;;
    *)
      echo "0"
      ;;
    esac
}

case $1 in
  on|true|enable)
    enable_xdebug
    ;;
  off|false|disable)
    disable_xdebug
    ;;
  toggle)
    status=$(get_xdebug_status)
    if [ "${status}" = "1" ]; then
      disable_xdebug
    else
      enable_xdebug
    fi
    ;;
  status)
    status=$(get_xdebug_status)
    if [ "${status}" = "1" ]; then
      result="xdebug enabled"
    else
      result="xdebug disabled"
    fi
    echo $result
    ;;
  *)
    echo "Invalid argument: $1"
    ;;
esac
