Browse Source

Make `pyenv init --path` usable as a `pyenv init -` substitute

We're going to eliminate the need to mandatorily use `pyenv init --path`.
We can't delete it yet for backward compatibility.
Besides, there's one other use case for it: to enable shims but without
shell integration, e.g. for noninteractive shells.

To be a full-fledged replacement for `pyenv init -` however,
it needs to do rehashing.
pull/2310/head
Ivan Pozdeev 2 years ago
parent
commit
6d4365a696
3 changed files with 12 additions and 1 deletions
  1. +1
    -1
      README.md
  2. +4
    -0
      libexec/pyenv-init
  3. +7
    -0
      test/init.bats

+ 1
- 1
README.md View File

@ -528,7 +528,7 @@ opposed to this idea. Here's what `eval "$(pyenv init -)"` actually does:
for some reason you need `pyenv` to be a real script rather than a
shell function, you can safely skip it.
`eval "$(pyenv init --path)"` only does item 1.
`eval "$(pyenv init --path)"` only does items 1 and 3.
To see exactly what happens under the hood for yourself, run `pyenv init -`
or `pyenv init --path`.

+ 4
- 0
libexec/pyenv-init View File

@ -57,6 +57,7 @@ function main() {
;;
"path")
print_path
print_rehash
exit 0
;;
"print")
@ -64,6 +65,7 @@ function main() {
print_path
print_env
print_completion
print_rehash
print_shell_function
exit 0
;;
@ -168,7 +170,9 @@ function print_completion() {
if [ -r "$completion" ]; then
echo "source '$completion'"
fi
}
function print_rehash() {
if [ -z "$no_rehash" ]; then
echo 'command pyenv rehash 2>/dev/null'
fi

+ 7
- 0
test/init.bats View File

@ -17,6 +17,13 @@ load test_helper
assert_line "command pyenv rehash 2>/dev/null"
}
@test "auto rehash for --path" {
run pyenv-init --path
assert_success
assert_line "command pyenv rehash 2>/dev/null"
}
@test "setup shell completions" {
root="$(cd $BATS_TEST_DIRNAME/.. && pwd)"
run pyenv-init - bash

Loading…
Cancel
Save