mirror of https://github.com/jenv/jenv.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
2.6 KiB
159 lines
2.6 KiB
#!/usr/bin/env bash |
|
# Summary: Configure the shell environment for jenv |
|
# Usage: eval "$(jenv init - [--no-rehash] [<shell>])" |
|
|
|
set -e |
|
[ -n "$JENV_DEBUG" ] && set -x |
|
|
|
print="" |
|
no_rehash="" |
|
for args in "$@" |
|
do |
|
if [ "$args" = "-" ]; then |
|
print=1 |
|
shift |
|
fi |
|
|
|
if [ "$args" = "--no-rehash" ]; then |
|
no_rehash=1 |
|
shift |
|
fi |
|
done |
|
|
|
shell="$1" |
|
if [ -z "$shell" ]; then |
|
shell="$(ps -p "$PPID" -o 'args=' 2>/dev/null || true)" |
|
shell="${shell%% *}" |
|
shell="${shell##-}" |
|
shell="${shell:-$SHELL}" |
|
shell="${shell##*/}" |
|
fi |
|
|
|
resolve_link() { |
|
$(type -p greadlink readlink | head -1) $1 |
|
} |
|
|
|
abs_dirname() { |
|
local cwd="$(pwd)" |
|
local path="$1" |
|
|
|
while [ -n "$path" ]; do |
|
cd "${path%/*}" |
|
local name="${path##*/}" |
|
path="$(resolve_link "$name" || true)" |
|
done |
|
|
|
pwd |
|
cd "$cwd" |
|
} |
|
|
|
root="$(abs_dirname "$0")/.." |
|
|
|
if [ -z "$print" ]; then |
|
case "$shell" in |
|
bash ) |
|
profile='~/.bash_profile' |
|
;; |
|
zsh ) |
|
profile='~/.zshrc' |
|
;; |
|
ksh ) |
|
profile='~/.profile' |
|
;; |
|
fish ) |
|
profile='~/.config/fish/config.fish' |
|
;; |
|
* ) |
|
profile='your profile' |
|
;; |
|
esac |
|
|
|
{ echo "# Load jenv automatically by adding" |
|
echo "# the following to ${profile}:" |
|
echo |
|
case "$shell" in |
|
fish ) |
|
echo 'status --is-interactive; and jenv init - | source' |
|
;; |
|
* ) |
|
echo 'eval "$(jenv init -)"' |
|
;; |
|
esac |
|
echo |
|
} >&2 |
|
|
|
exit 1 |
|
fi |
|
|
|
mkdir -p "${JENV_ROOT}/"{shims,plugins,versions} |
|
|
|
case "$shell" in |
|
fish ) |
|
echo "set -gx PATH '${JENV_ROOT}/shims' \$PATH" |
|
echo "set -gx JENV_SHELL $shell" |
|
echo "set -gx JENV_LOADED 1" |
|
echo "set -e JAVA_HOME" |
|
echo "set -e JDK_HOME" |
|
;; |
|
bash | zsh | * ) |
|
echo 'export PATH="'${JENV_ROOT}'/shims:${PATH}"' |
|
echo "export JENV_SHELL=$shell" |
|
echo "export JENV_LOADED=1" |
|
echo "unset JAVA_HOME" |
|
echo "unset JDK_HOME" |
|
;; |
|
esac |
|
|
|
completion="${root}/completions/jenv.${shell}" |
|
if [ -r "$completion" ]; then |
|
echo "source '$completion'" |
|
fi |
|
|
|
if [ -z "$no_rehash" ]; then |
|
echo 'jenv rehash 2>/dev/null' |
|
fi |
|
|
|
echo "jenv refresh-plugins" |
|
|
|
for script in $(jenv-hooks init $shell); do |
|
echo "source \"$script\"" |
|
done |
|
|
|
commands=(`jenv-commands --sh`) |
|
case "$shell" in |
|
fish ) |
|
IFS=" " |
|
cat <<EOS |
|
function jenv |
|
set command \$argv[1] |
|
set -e argv[1] |
|
|
|
switch "\$command" |
|
case ${commands[*]} |
|
jenv "sh-\$command" \$argv | source |
|
case '*' |
|
command jenv "\$command" \$argv |
|
end |
|
end |
|
EOS |
|
;; |
|
bash | zsh | * ) |
|
IFS="|" |
|
cat <<EOS |
|
jenv() { |
|
type typeset &> /dev/null && typeset command |
|
command="\$1" |
|
if [ "\$#" -gt 0 ]; then |
|
shift |
|
fi |
|
|
|
case "\$command" in |
|
${commands[*]}) |
|
eval \`jenv "sh-\$command" "\$@"\`;; |
|
*) |
|
command jenv "\$command" "\$@";; |
|
esac |
|
} |
|
EOS |
|
;; |
|
esac
|
|
|