From 057d7ad445aeed11e11bad3040b52b2b014f1fb6 Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Sun, 15 Dec 2024 19:32:49 +0300 Subject: [PATCH] Support `pyenv-version-file-write --force` --- libexec/pyenv-version-file-write | 18 ++++++++++++++++-- test/version-file-write.bats | 7 +++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/libexec/pyenv-version-file-write b/libexec/pyenv-version-file-write index 7095140f..d1389cd2 100755 --- a/libexec/pyenv-version-file-write +++ b/libexec/pyenv-version-file-write @@ -1,9 +1,23 @@ #!/usr/bin/env bash -# Usage: pyenv version-file-write +# Usage: pyenv version-file-write [-f|--force] set -e [ -n "$PYENV_DEBUG" ] && set -x +while [[ $# -gt 0 ]] +do + case "$1" in + -f|--force) + FORCE=1 + shift + ;; + *) + break + ;; + esac +done + + PYENV_VERSION_FILE="$1" shift || true versions=("$@") @@ -14,7 +28,7 @@ if [ -z "$versions" ] || [ -z "$PYENV_VERSION_FILE" ]; then fi # Make sure the specified version is installed. -pyenv-prefix "${versions[@]}" >/dev/null +[[ -z $FORCE ]] && pyenv-prefix "${versions[@]}" >/dev/null # Write the version out to disk. # Create an empty file. Using "rm" might cause a permission error. diff --git a/test/version-file-write.bats b/test/version-file-write.bats index aa7100d6..38281f9e 100644 --- a/test/version-file-write.bats +++ b/test/version-file-write.bats @@ -21,6 +21,13 @@ setup() { assert [ ! -e ".python-version" ] } +@test "setting nonexistent version succeeds with force" { + assert [ ! -e ".python-version" ] + run pyenv-version-file-write --force ".python-version" "2.7.6" + assert_success + assert [ -e ".python-version" ] +} + @test "writes value to arbitrary file" { mkdir -p "${PYENV_ROOT}/versions/2.7.6" assert [ ! -e "my-version" ]