зеркало из https://github.com/dotnet/tye.git
100 строки
3.1 KiB
Bash
Executable File
100 строки
3.1 KiB
Bash
Executable File
#
|
|
# This file must be used by invoking "source activate.sh" from the command line.
|
|
# You cannot run it directly.
|
|
# To exit from the environment this creates, execute the 'deactivate' function.
|
|
|
|
_RED="\033[0;31m"
|
|
_MAGENTA="\033[0;95m"
|
|
_YELLOW="\033[0;33m"
|
|
_RESET="\033[0m"
|
|
|
|
# This detects if a script was sourced or invoked directly
|
|
# See https://stackoverflow.com/a/28776166/2526265
|
|
sourced=0
|
|
if [ -n "$ZSH_EVAL_CONTEXT" ]; then
|
|
case $ZSH_EVAL_CONTEXT in *:file) sourced=1;; esac
|
|
THIS_SCRIPT="${0:-}"
|
|
elif [ -n "$KSH_VERSION" ]; then
|
|
[ "$(cd $(dirname -- $0) && pwd -P)/$(basename -- $0)" != "$(cd $(dirname -- ${.sh.file}) && pwd -P)/$(basename -- ${.sh.file})" ] && sourced=1
|
|
THIS_SCRIPT="${0:-}"
|
|
elif [ -n "$BASH_VERSION" ]; then
|
|
(return 2>/dev/null) && sourced=1
|
|
THIS_SCRIPT="$BASH_SOURCE"
|
|
else # All other shells: examine $0 for known shell binary filenames
|
|
# Detects `sh` and `dash`; add additional shell filenames as needed.
|
|
case ${0##*/} in sh|dash) sourced=1;; esac
|
|
THIS_SCRIPT="${0:-}"
|
|
fi
|
|
|
|
if [ $sourced -eq 0 ]; then
|
|
printf "${_RED}This script cannot be invoked directly.${_RESET}\n"
|
|
printf "${_RED}To function correctly, this script file must be sourced by calling \"source $0\".${_RESET}\n"
|
|
exit 1
|
|
fi
|
|
|
|
dtye () {
|
|
dotnet run --project "$THIS_SCRIPT/src/tye" "$@"
|
|
}
|
|
|
|
deactivate () {
|
|
|
|
# reset old environment variables
|
|
if [ ! -z "${_OLD_PATH:-}" ] ; then
|
|
export PATH="$_OLD_PATH"
|
|
unset _OLD_PATH
|
|
fi
|
|
|
|
if [ ! -z "${_OLD_PS1:-}" ] ; then
|
|
export PS1="$_OLD_PS1"
|
|
unset _OLD_PS1
|
|
fi
|
|
|
|
# This should detect bash and zsh, which have a hash command that must
|
|
# be called to get it to forget past commands. Without forgetting
|
|
# past commands the $PATH changes we made may not be respected
|
|
if [ -n "${BASH:-}" ] || [ -n "${ZSH_VERSION:-}" ] ; then
|
|
hash -r 2>/dev/null
|
|
fi
|
|
|
|
unset DOTNET_ROOT
|
|
unset DOTNET_MULTILEVEL_LOOKUP
|
|
if [ ! "${1:-}" = "init" ] ; then
|
|
# Remove the deactivate function
|
|
unset -f deactivate
|
|
unset -f dtye
|
|
fi
|
|
}
|
|
|
|
# Cleanup the environment
|
|
deactivate init
|
|
|
|
DIR="$( cd "$( dirname "$THIS_SCRIPT" )" && pwd )"
|
|
_OLD_PATH="$PATH"
|
|
# Tell dotnet where to find itself
|
|
export DOTNET_ROOT="$DIR/.dotnet"
|
|
# Tell dotnet not to look beyond the DOTNET_ROOT folder for more dotnet things
|
|
export DOTNET_MULTILEVEL_LOOKUP=0
|
|
# Put dotnet first on PATH
|
|
export PATH="$DOTNET_ROOT:$PATH"
|
|
|
|
# Set the shell prompt
|
|
if [ -z "${DISABLE_CUSTOM_PROMPT:-}" ] ; then
|
|
_OLD_PS1="$PS1"
|
|
export PS1="(`basename \"$DIR\"`) $PS1"
|
|
fi
|
|
|
|
# This should detect bash and zsh, which have a hash command that must
|
|
# be called to get it to forget past commands. Without forgetting
|
|
# past commands the $PATH changes we made may not be respected
|
|
if [ -n "${BASH:-}" ] || [ -n "${ZSH_VERSION:-}" ] ; then
|
|
hash -r 2>/dev/null
|
|
fi
|
|
|
|
printf "${_MAGENTA}Enabled the .NET Core environment. Execute 'deactivate' to exit.${_RESET}\n"
|
|
|
|
if [ ! -f "$DOTNET_ROOT/dotnet" ]; then
|
|
printf "${_YELLOW}.NET Core has not been installed yet. Run $DIR/restore.sh to install it.${_RESET}\n"
|
|
else
|
|
printf "dotnet = $DOTNET_ROOT/dotnet\n"
|
|
fi
|