mirror of
https://github.com/pyenv/pyenv.git
synced 2024-12-22 10:33:35 +00:00
Merge branch 'shell-fixes'
This commit is contained in:
commit
71a6d791c2
7 changed files with 163 additions and 18 deletions
22
completions/rbenv.fish
Normal file
22
completions/rbenv.fish
Normal file
|
@ -0,0 +1,22 @@
|
|||
function __fish_rbenv_needs_command
|
||||
set cmd (commandline -opc)
|
||||
if [ (count $cmd) -eq 1 -a $cmd[1] = 'rbenv' ]
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
function __fish_rbenv_using_command
|
||||
set cmd (commandline -opc)
|
||||
if [ (count $cmd) -gt 1 ]
|
||||
if [ $argv[1] = $cmd[2] ]
|
||||
return 0
|
||||
end
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
complete -f -c rbenv -n '__fish_rbenv_needs_command' -a '(rbenv commands)'
|
||||
for cmd in (rbenv commands)
|
||||
complete -f -c rbenv -n "__fish_rbenv_using_command $cmd" -a "(rbenv completions $cmd)"
|
||||
end
|
|
@ -62,6 +62,9 @@ if [ -z "$print" ]; then
|
|||
ksh )
|
||||
profile='~/.profile'
|
||||
;;
|
||||
fish )
|
||||
profile='~/.config/fish/config.fish'
|
||||
;;
|
||||
* )
|
||||
profile='your profile'
|
||||
;;
|
||||
|
@ -70,7 +73,14 @@ if [ -z "$print" ]; then
|
|||
{ echo "# Load rbenv automatically by adding"
|
||||
echo "# the following to ${profile}:"
|
||||
echo
|
||||
echo 'eval "$(rbenv init -)"'
|
||||
case "$shell" in
|
||||
fish )
|
||||
echo '. (rbenv init -|psub)'
|
||||
;;
|
||||
* )
|
||||
echo 'eval "$(rbenv init -)"'
|
||||
;;
|
||||
esac
|
||||
echo
|
||||
} >&2
|
||||
|
||||
|
@ -80,21 +90,57 @@ fi
|
|||
mkdir -p "${RBENV_ROOT}/"{shims,versions}
|
||||
|
||||
if [[ ":${PATH}:" != *:"${RBENV_ROOT}/shims":* ]]; then
|
||||
echo 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"'
|
||||
case "$shell" in
|
||||
fish )
|
||||
echo "setenv PATH '${RBENV_ROOT}/shims' \$PATH"
|
||||
;;
|
||||
* )
|
||||
echo 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
completion="${root}/completions/rbenv.${shell}"
|
||||
[ -r "$completion" ] && echo "source '$completion'"
|
||||
[ -r "$completion" ] && echo ". '$completion'"
|
||||
|
||||
if [ -z "$no_rehash" ]; then
|
||||
echo 'rbenv rehash 2>/dev/null'
|
||||
fi
|
||||
|
||||
commands=(`rbenv-commands --sh`)
|
||||
case "$shell" in
|
||||
fish )
|
||||
cat <<EOS
|
||||
function rbenv
|
||||
set command \$argv[1]
|
||||
set -e argv[1]
|
||||
|
||||
switch "\$command"
|
||||
case ${commands[*]}
|
||||
eval (rbenv "sh-\$command" \$argv)
|
||||
case '*'
|
||||
command rbenv "\$command" \$argv
|
||||
end
|
||||
end
|
||||
EOS
|
||||
exit 0
|
||||
;;
|
||||
ksh )
|
||||
cat <<EOS
|
||||
function rbenv {
|
||||
typeset command
|
||||
EOS
|
||||
;;
|
||||
* )
|
||||
cat <<EOS
|
||||
rbenv() {
|
||||
local command
|
||||
EOS
|
||||
;;
|
||||
esac
|
||||
|
||||
IFS="|"
|
||||
cat <<EOS
|
||||
rbenv() {
|
||||
typeset command
|
||||
command="\$1"
|
||||
if [ "\$#" -gt 0 ]; then
|
||||
shift
|
||||
|
|
|
@ -7,7 +7,19 @@ if [ "$1" = "--complete" ]; then
|
|||
exec rbenv-rehash --complete
|
||||
fi
|
||||
|
||||
shell="$(basename "$SHELL")"
|
||||
|
||||
# When rbenv shell integration is enabled, delegate to rbenv-rehash,
|
||||
# then tell the shell to empty its command lookup cache.
|
||||
rbenv-rehash
|
||||
echo "hash -r 2>/dev/null || true"
|
||||
|
||||
case "$shell" in
|
||||
fish )
|
||||
or='; or'
|
||||
;;
|
||||
* )
|
||||
or='||'
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "hash -r 2>/dev/null $or true"
|
||||
|
|
|
@ -24,6 +24,7 @@ if [ "$1" = "--complete" ]; then
|
|||
fi
|
||||
|
||||
version="$1"
|
||||
shell="$(basename "$SHELL")"
|
||||
|
||||
if [ -z "$version" ]; then
|
||||
if [ -z "$RBENV_VERSION" ]; then
|
||||
|
@ -36,14 +37,28 @@ if [ -z "$version" ]; then
|
|||
fi
|
||||
|
||||
if [ "$version" = "--unset" ]; then
|
||||
echo "unset RBENV_VERSION"
|
||||
case "$shell" in
|
||||
fish )
|
||||
echo "set -e RBENV_VERSION"
|
||||
;;
|
||||
* )
|
||||
echo "unset RBENV_VERSION"
|
||||
;;
|
||||
esac
|
||||
exit
|
||||
fi
|
||||
|
||||
# Make sure the specified version is installed.
|
||||
if rbenv-prefix "$version" >/dev/null; then
|
||||
echo "export RBENV_VERSION=\"${version}\""
|
||||
case "$shell" in
|
||||
fish )
|
||||
echo "setenv RBENV_VERSION \"${version}\""
|
||||
;;
|
||||
* )
|
||||
echo "export RBENV_VERSION=\"${version}\""
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "return 1"
|
||||
echo "false"
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -18,11 +18,17 @@ load test_helper
|
|||
}
|
||||
|
||||
@test "setup shell completions" {
|
||||
export SHELL=/bin/bash
|
||||
root="$(cd $BATS_TEST_DIRNAME/.. && pwd)"
|
||||
run rbenv-init -
|
||||
SHELL=/bin/bash run rbenv-init -
|
||||
assert_success
|
||||
assert_line "source '${root}/libexec/../completions/rbenv.bash'"
|
||||
assert_line ". '${root}/libexec/../completions/rbenv.bash'"
|
||||
}
|
||||
|
||||
@test "setup shell completions (fish)" {
|
||||
root="$(cd $BATS_TEST_DIRNAME/.. && pwd)"
|
||||
SHELL=/usr/bin/fish run rbenv-init -
|
||||
assert_success
|
||||
assert_line ". '${root}/libexec/../completions/rbenv.fish'"
|
||||
}
|
||||
|
||||
@test "option to skip rehash" {
|
||||
|
@ -33,14 +39,28 @@ load test_helper
|
|||
|
||||
@test "adds shims to PATH" {
|
||||
export PATH="${BATS_TEST_DIRNAME}/../libexec:/usr/bin:/bin"
|
||||
run rbenv-init -
|
||||
SHELL=/bin/bash run rbenv-init -
|
||||
assert_success
|
||||
assert_line 0 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"'
|
||||
}
|
||||
|
||||
@test "adds shims to PATH (fish)" {
|
||||
export PATH="${BATS_TEST_DIRNAME}/../libexec:/usr/bin:/bin"
|
||||
SHELL=/usr/bin/fish run rbenv-init -
|
||||
assert_success
|
||||
assert_line 0 "setenv PATH '${RBENV_ROOT}/shims' \$PATH"
|
||||
}
|
||||
|
||||
@test "doesn't add shims to PATH more than once" {
|
||||
export PATH="${RBENV_ROOT}/shims:$PATH"
|
||||
run rbenv-init -
|
||||
SHELL=/bin/bash run rbenv-init -
|
||||
assert_success
|
||||
refute_line 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"'
|
||||
}
|
||||
|
||||
@test "doesn't add shims to PATH more than once (fish)" {
|
||||
export PATH="${RBENV_ROOT}/shims:$PATH"
|
||||
SHELL=/usr/bin/fish run rbenv-init -
|
||||
assert_success
|
||||
refute_line 'setenv PATH "'${RBENV_ROOT}'/shims" $PATH ;'
|
||||
}
|
||||
|
|
|
@ -98,3 +98,17 @@ SH
|
|||
assert_success
|
||||
assert_output "HELLO=:hello:ugly:world:again"
|
||||
}
|
||||
|
||||
@test "sh-rehash in bash" {
|
||||
create_executable "2.0" "ruby"
|
||||
SHELL=/bin/bash run rbenv-sh-rehash
|
||||
assert_success "hash -r 2>/dev/null || true"
|
||||
assert [ -x "${RBENV_ROOT}/shims/ruby" ]
|
||||
}
|
||||
|
||||
@test "sh-rehash in fish" {
|
||||
create_executable "2.0" "ruby"
|
||||
SHELL=/usr/bin/fish run rbenv-sh-rehash
|
||||
assert_success "hash -r 2>/dev/null ; or true"
|
||||
assert [ -x "${RBENV_ROOT}/shims/ruby" ]
|
||||
}
|
||||
|
|
|
@ -11,26 +11,42 @@ load test_helper
|
|||
}
|
||||
|
||||
@test "shell version" {
|
||||
RBENV_VERSION="1.2.3" run rbenv-sh-shell
|
||||
SHELL=/bin/bash RBENV_VERSION="1.2.3" run rbenv-sh-shell
|
||||
assert_success 'echo "$RBENV_VERSION"'
|
||||
}
|
||||
|
||||
@test "shell version (fish)" {
|
||||
SHELL=/usr/bin/fish RBENV_VERSION="1.2.3" run rbenv-sh-shell
|
||||
assert_success 'echo "$RBENV_VERSION"'
|
||||
}
|
||||
|
||||
@test "shell unset" {
|
||||
run rbenv-sh-shell --unset
|
||||
SHELL=/bin/bash run rbenv-sh-shell --unset
|
||||
assert_success "unset RBENV_VERSION"
|
||||
}
|
||||
|
||||
@test "shell unset (fish)" {
|
||||
SHELL=/usr/bin/fish run rbenv-sh-shell --unset
|
||||
assert_success "set -e RBENV_VERSION"
|
||||
}
|
||||
|
||||
@test "shell change invalid version" {
|
||||
run rbenv-sh-shell 1.2.3
|
||||
assert_failure
|
||||
assert_output <<SH
|
||||
rbenv: version \`1.2.3' not installed
|
||||
return 1
|
||||
false
|
||||
SH
|
||||
}
|
||||
|
||||
@test "shell change version" {
|
||||
mkdir -p "${RBENV_ROOT}/versions/1.2.3"
|
||||
run rbenv-sh-shell 1.2.3
|
||||
SHELL=/bin/bash run rbenv-sh-shell 1.2.3
|
||||
assert_success 'export RBENV_VERSION="1.2.3"'
|
||||
}
|
||||
|
||||
@test "shell change version (fish)" {
|
||||
mkdir -p "${RBENV_ROOT}/versions/1.2.3"
|
||||
SHELL=/usr/bin/fish run rbenv-sh-shell 1.2.3
|
||||
assert_success 'setenv RBENV_VERSION "1.2.3"'
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue