#!/usr/bin/env bash

# Base is a collection of general files + commonly included setup functions.

#duplicated from scripts/rvm - rare reload issue
__rvm_has_opt()
{
  # pre-gnu
  if [[ -n "${ZSH_VERSION}"  ]] && setopt | GREP_OPTIONS="" \grep "^${1}$" >/dev/null 2>&1
  then return 0
  elif [[ -n "${BASH_VERSION}" ]] && [[ ":$SHELLOPTS:" =~ ":${1}:" ]]
  then return 0
  else return 1
  fi
}

if __rvm_has_opt "errexit"
then rvm_stored_errexit=1
fi

set +e

: rvm_trace_flag:${rvm_trace_flag:=0}
if (( rvm_trace_flag > 0 ))
then
  set -o xtrace

  if [[ -z "${ZSH_VERSION:-}" ]]
  then
    export PS4
    PS4="+ \$(__rvm_date \"+%s.%N\" 2>/dev/null) \${BASH_SOURCE##\${rvm_path:-}} : \${FUNCNAME[0]:+\${FUNCNAME[0]}()}  \${LINENO} > "
  fi
fi

export __array_start rvm_path >/dev/null

#
# Setup environment parameters.
#
if [[ -n "${ZSH_VERSION:-}" ]]
then __array_start=1
else __array_start=0
fi

if (( ${rvm_ignore_rvmrc:=0} == 0 ))
then
  [[ -n "${rvm_stored_umask:-}" ]] || export rvm_stored_umask=$(umask)
  rvm_rvmrc_files=("/etc/rvmrc" "$HOME/.rvmrc")
  if [[ -n "${rvm_prefix:-}" ]] && ! [[ "$HOME/.rvmrc" -ef "${rvm_prefix}/.rvmrc" ]]
     then rvm_rvmrc_files+=( "${rvm_prefix}/.rvmrc" )
  fi

  for rvmrc in "${rvm_rvmrc_files[@]}"
  do
    if [[ -f "$rvmrc" ]]
    then
      # pre-gnu
      if GREP_OPTIONS="" \grep '^\s*rvm .*$' "$rvmrc" >/dev/null 2>&1
      then
        printf "%b" "
Error:
        $rvmrc is for rvm settings only.
        rvm CLI may NOT be called from within $rvmrc.
        Skipping the loading of $rvmrc"
        return 1
      else
        source "$rvmrc"
      fi
    fi
  done
  unset rvm_rvmrc_files
fi

# duplication marker jdgkjnfnkjdngjkfnd4fd
export rvm_path
if [[ -z "${rvm_path:-}" ]]
then
  if [[ -n "${BASH_SOURCE:-$_}" && -f "${BASH_SOURCE:-$_}" ]]
  then
    rvm_path="${BASH_SOURCE:-$_}"
    rvm_path="$( \cd "${rvm_path%/scripts/base}">/dev/null; pwd )"
  elif (( UID == 0 )) && [[ -d "/usr/local/rvm" ]]
  then rvm_path="/usr/local/rvm"
  elif [[ -d "${HOME}/.rvm" ]]
  then rvm_path="${HOME}/.rvm"
  elif [[ -d "/usr/local/rvm" ]]
  then rvm_path="/usr/local/rvm"
  else echo "Can't find rvm install!" 1>&2 ; exit 1
  fi
fi

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

source "${rvm_scripts_path}/initialize"

# Load the general scripts.
# Use rvm_base_except="selector", for example, to override the loading.
case " ${rvm_base_except:-} " in
  (*[[:space:]]selector[[:space:]]*)
    true # do not load.
    ;;
  (*)
    source "${rvm_scripts_path}/selector"
    source "${rvm_scripts_path}/selector_gemsets"
    source "${rvm_scripts_path}/selector_late"
    source "${rvm_scripts_path}/selector_parse"
    ;;
esac

typeset -a scripts
scripts=(
  logging db support utility init cleanup env rvmrc install environment gemset checksum list
)
for entry in ${scripts[@]}
do source "${rvm_scripts_path}/functions/$entry"
done
unset scripts entry rvm_base_except
