#!/usr/bin/env bash

  export HOME="${HOME%%+(\/)}" # Remove trailing slashes if they exist on HOME

  if (( ${rvm_ignore_rvmrc:=0} == 0 ))
  then
    for rvmrc in /etc/rvmrc "$HOME/.rvmrc"
    do
      if [[ -f "$rvmrc" ]]
      then
        if \grep '^\s*rvm .*$' "$rvmrc" >/dev/null 2>&1
        then
          printf "\nError: $rvmrc is for rvm settings only.\nrvm CLI may NOT be called from within $rvmrc. \nSkipping the loading of $rvmrc"
          return 1
        else
          source "$rvmrc"
        fi
      fi
    done
  fi

  if [[ -z "${rvm_path:-}" ]]
  then
    # Set the default sandboxed value.
    # TODO: Alter the variable names to make sense
    if [[ -z "${rvm_user_install_flag:-}" ]]
    then
      if (( UID == 0 )) ||
        [[ -n "${rvm_prefix:-}" && "${rvm_prefix:-}" != "${HOME}" ]]
      then
        rvm_user_install_flag=0
      else
        rvm_user_install_flag=1
      fi
    fi

    if [[ -z "${rvm_prefix:-}" ]]
    then
      if (( ${rvm_user_install_flag:=0} == 0 ))
      then
        rvm_prefix="/usr/local"
      elif [[ -n "$HOME" ]]
      then
        rvm_prefix="$HOME"
      else
        echo "No \$rvm_prefix was provided and "
        echo "$(id | \sed -e's/^[^(]*(//' -e 's/).*//') has no \$HOME defined."
        echo "Halting loading of RVM."
        rvm_load_rvm=0
      fi
    fi

    true "${rvm_prefix/rvm/scripts}" # Fix rvm_prefix changes, older installs.

    if [[ -z "${rvm_path:-}" ]]
    then
      if [[ "$rvm_prefix" = "$HOME" ]]
      then
        rvm_path="${rvm_prefix}/.rvm"
      else
        rvm_path="${rvm_prefix}/rvm"
      fi
    fi

    export rvm_path="${rvm_path%%+(\/)}"
  fi

true ${rvm_scripts_path:="$rvm_path/scripts"}

__rvm_shell_lookup_script()
{
  local relative_scripts_dir
  relative_scripts_dir="$(dirname -- "$(dirname -- "$0")")/scripts"
  for directory in "$rvm_scripts_path" "$HOME/.rvm/scripts" "/usr/local/rvm/scripts" "$relative_scripts_dir"; do
    if [[ -d "$directory" && -s "$directory/rvm" ]]; then
      echo "$directory/rvm"
      return
    fi
  done
}

if [[ -n "$1" && ! -f "$1" && -n "$(echo "$1" | \grep -v '^-')" ]]; then
  rvm_shell_ruby_string="$1"
  shift
fi

rvm_shell_rvm_path="$(__rvm_shell_lookup_script)"
if [[ -n "$rvm_shell_rvm_path" ]]; then
  source "$rvm_shell_rvm_path"
  # Setup as expected.
  if [[ -n "$rvm_shell_ruby_string" ]]; then
      rvm "$rvm_shell_ruby_string"
      if [[ "$?" -gt 0 ]]; then
        echo "Error: RVM was unable to use '$rvm_shell_ruby_string'" 1>&2
        exit 1
      fi
  else
    rvm rvmrc load >/dev/null 2>&1
  fi
fi

exec bash "$@"
