hsenv-0.3: skeletons/activate
if [ -n "${HSENV}" ]; then
if [ "<HSENV>" = "${HSENV}" -a "<HSENV_NAME>" = "${HSENV_NAME}" ]; then
echo "${HSENV_NAME} Virtual Haskell Environment is already active."
else
echo "There is already ${HSENV_NAME} Virtual Haskell Environment activated."
echo "(at ${HSENV})"
echo "Deactivate it first (using command 'deactivate_hsenv'), to activate"
echo "<HSENV_NAME> environment."
fi
return 1
fi
export HSENV="<HSENV>"
export HSENV_NAME="<HSENV_NAME>"
echo "Activating ${HSENV_NAME} Virtual Haskell Environment (at ${HSENV})."
echo ""
echo "Use regular Haskell tools (ghc, ghci, ghc-pkg, cabal) to manage your Haskell environment."
echo ""
echo "To exit from this virtual environment, enter command 'deactivate_hsenv'."
export "HSENV_PATH_BACKUP"="${PATH}"
export "HSENV_PS1_BACKUP"="${PS1}"
deactivate_hsenv() {
echo "Deactivating ${HSENV_NAME} Virtual Haskell Environment (at ${HSENV})."
echo "Restoring previous environment settings."
export "PATH"="${HSENV_PATH_BACKUP}"
unset -v "HSENV_PATH_BACKUP"
export "PS1"="${HSENV_PS1_BACKUP}"
unset -v "HSENV_PS1_BACKUP"
unset -v PACKAGE_DB_FOR_CABAL
unset -v PACKAGE_DB_FOR_GHC_PKG
unset -v PACKAGE_DB_FOR_GHC
unset -v HSENV
unset -v HSENV_NAME
unset -v GHC_PACKAGE_PATH
unset -f deactivate_hsenv
if [ -n "$BASH" -o -n "$ZSH_VERSION" ]; then
hash -r
fi
}
PATH_PREPENDIX="$(cat <HSENV_DIR>/path_var_prependix)"
export PATH="${PATH_PREPENDIX}:${PATH}"
unset -v PATH_PREPENDIX
unset -v PACKAGE_DB_FOR_GHC
ghc --version > /dev/null
if [ "$?" -ne 0 ]; then
echo "Failed to get ghc version. Deactivating environment..."
deactivate_hsenv
exit 1
fi
# To compare version numbers as ints, split at dots, check them all.
GHC_VERSION_OUTPUT="$(ghc --version)"
GHC_VERSION_NUMBER="$(echo $GHC_VERSION_OUTPUT | sed 's/.* //' | tr '.' ' ')"
item=1
for check_num in 7 6 1
do
cur_num=$(echo $GHC_VERSION_NUMBER | awk "{ print \$$item; }")
if [ "$cur_num" -lt "$check_num" ]
then
PKG_DB_OPT_SUFFIX="conf"
break
fi
item=$(expr $item + 1)
done
# If it's still unset, we're >= 7.6.1
if [ -z "$PKG_DB_OPT_SUFFIX" ]
then
PKG_DB_OPT_SUFFIX="db"
fi
GHC_PACKAGE_PATH_REPLACEMENT="$(cat <HSENV_DIR>/ghc_package_path_var | sed -r -e 's/^/:/' -e 's/::*/:/g' -e 's/:\s*$//')"
replace_pkg () {
replacement=$1
echo "$GHC_PACKAGE_PATH_REPLACEMENT" | sed -e "s/:/ $replacement/g"
}
export PACKAGE_DB_FOR_CABAL="$(replace_pkg '--package-db=')"
export PACKAGE_DB_FOR_GHC_PKG=" --no-user-package-${PKG_DB_OPT_SUFFIX} $(replace_pkg --package-${PKG_DB_OPT_SUFFIX}=)"
export PACKAGE_DB_FOR_GHC=" -no-user-package-${PKG_DB_OPT_SUFFIX} $(replace_pkg -package-${PKG_DB_OPT_SUFFIX}=)"
export PACKAGE_DB_FOR_GHC_MOD=" -g -no-user-package-${PKG_DB_OPT_SUFFIX} $(replace_pkg '-g -package-'${PKG_DB_OPT_SUFFIX}=)"
export PS1="(${HSENV_NAME})${PS1}"
unset -v GHC_VERSION_OUTPUT
unset -v GHC_VERSION_NUMBER
unset -v PKG_DB_OPT_SUFFIX
unset -v GHC_PACKAGE_PATH_REPLACEMENT
if [ -n "$BASH" -o -n "$ZSH_VERSION" ]; then
hash -r
fi