#!/usr/bin/env bash

sudo_args=()

while [[ $# -gt 0 ]] ; do
  token="${1}"

  #rvm trace flag
  case "${token}" in
  (--trace)
    export PS4="+ \${BASH_SOURCE##\${gvm_path:-}} : \${FUNCNAME[0]:+\${FUNCNAME[0]}()}  \${LINENO} > "
    set -o xtrace
    ;;

  #rvm verbose flag
  (--verbose)
    set -o verbose
    ;;

  #not an rvm option, treat as sudo option
  (-*)
    sudo_args+=("$token")

    #option with value
    case "$token" in
    (-g|-u|-p|-r|-t|-U|-C)
      shift
      #read & append the value
      sudo_args+=("$1")
      ;;
    esac
    ;;

  #no more options skip processing
  (*)
    break
    ;;
  esac

  #go to next param
  shift
done

if [[ $# -gt 0 ]]
then
  eval sudo "${sudo_args[@]}" /usr/bin/env "$(/usr/bin/env | grep -E '^GO|^GVM|^PATH' | sed 's/=\(.*\)$/="\1"/' )" "$@"
else
  printf "Usage:\n  %s [--trace] [--verbose] [sudo-options] command [command-options]\n $0"
fi