# Copy this file to your non integrated *nix-like environment,
# Cygwin/MSys2/Git for Windows SDK, installs '/etc/profile.d/'
# folder to integrate the externally installed Unix like environment
# into Cmder so it has access to settings stored in Cmder/config
# folder when launched.
#
# The destination file extension depends on the shell you use.  For example:
#
# bash - Copy to /etc/profile.d/cmder_exinit.sh
# zsh  - Copy to /etc/profile.d/cmder_exinit.zsh
# Add portable user customizations ${CMDER_ROOT}/config/user-profile.sh or
# add whole config scripts to ${CMDER_ROOT}/config/profile.d both will be sourced
# from mthis file and be appied to the environment at startup.
#
# These customizations will follow Cmder if $CMDER_ROOT is copied
# to another machine.
#
# Add system specific users customizations to $HOME/.bashrc, these
# customizations will not follow Cmder to another machine.

# # Uncomment and edit the CMDER_ROOT line to use Cmder/config even when launched
# # from outside Cmder.
# CMDER_ROOT=${USERPROFILE}/cmder  # This is not required if launched from Cmder.

function runProfiled {
  unset profile_d_scripts
  pushd "${1}" >/dev/null

  if [ ! "x${ZSH_VERSION}" = "x"  ]; then
    profile_d_scripts=$(ls *.zsh 2>/dev/null)
  elif [ ! "x${BASH_VERSION}" = "x"  ]; then
    profile_d_scripts=$(ls *.sh 2>/dev/null)
  fi

  if [ ! "x${profile_d_scripts}" = "x" ] ; then
    for x in ${profile_d_scripts} ; do
      echo Sourcing "${1}/${x}"...
      . "${1}/${x}"
    done
  fi
  popd >/dev/null
}

# Check that we haven't already been sourced.
[[ -z ${CMDER_EXINIT} ]] && CMDER_EXINIT="1" || return

# We do this for bash as admin sessions since $CMDER_ROOT is not being set
if [ "$CMDER_ROOT" = "" -a "$ConEmuDir" != "" ] ; then
  if [ -d "${ConEmuDir}../../vendor" ] ; then
    case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac
  else
    echo "Running in ConEmu without Cmder, skipping Cmder integration."
  fi
elif [ "$CMDER_ROOT" != "" ] ; then
  case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac
fi

if [ ! "$CMDER_ROOT" = "" ] ; then
  # Remove any trailing '/'
  CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::')

  echo "Using \"CMDER_ROOT\" at \"${CMDER_ROOT}\"."

  export CMDER_ROOT

  PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}

  export PATH

  # Drop *.sh or *.zsh files into "${CMDER_ROOT}\config\profile.d"
  # to source them at startup.
  if [ ! -d "${CMDER_ROOT}/config/profile.d" ] ; then
    mkdir -p "${CMDER_ROOT}/config/profile.d"
  fi

  if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then
    runProfiled  "${CMDER_ROOT}/config/profile.d"
  fi

  if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then
    runProfiled  "${CMDER_USER_CONFIG}/profile.d"
  fi


  # Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency.
  if [ -f "$CMDER_ROOT/config/user-profile.sh" ] ; then
    mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh"
  fi

  CmderUserProfilePath="${CMDER_ROOT}/config/user_profile.sh"
  if [ -f "${CMDER_ROOT}/config/user_profile.sh" ] ; then
      . "${CMDER_ROOT}/config/user_profile.sh"
  fi

  if [ "${CMDER_USER_CONFIG}" != "" ] ; then
    # Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency.
    if [ -f "$CMDER_USER_CONFIG/user-profile.sh" ] ; then
      mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh"
    fi

    export PATH=${CMDER_USER_CONFIG}/bin:$PATH

    CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh"
    if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then
      . "${CMDER_USER_CONFIG}/user_profile.sh"
    fi
  fi

  if [ ! -f "${CmderUserProfilePath}" ] ; then
      echo Creating user startup file: "${CmderUserProfilePath}"
      cat <<-eof >"${CmderUserProfilePath}"
# use this file to run your own startup commands for msys2 bash'

# To add a new vendor to the path, do something like:
# export PATH=\${CMDER_ROOT}/vendor/whatever:\${PATH}
eof
  fi
fi
