feat: support (skip) commented lines in version-file

Sometimes it is convenient to be able to temporarily disable something
in a version-file. Because these files often aren't necessarily tracked
in a SCM, especially when working with virtualenvs, the SCM diffs won't
help with showing removed lines which are currently the only way to
disable something.
This commit is contained in:
Ville Skyttä 2021-04-05 10:22:08 +03:00
parent c010935abd
commit 641916270b
3 changed files with 14 additions and 1 deletions

View file

@ -136,6 +136,7 @@ executable path to each of these using `pyenv which`, e.g. `pyenv which python2.
(should display `$(pyenv root)/versions/2.5/bin/python2.5`), or `pyenv which (should display `$(pyenv root)/versions/2.5/bin/python2.5`), or `pyenv which
python3.4` (should display path to system Python3). You can also specify multiple python3.4` (should display path to system Python3). You can also specify multiple
versions in a `.python-version` file, separated by newlines or any whitespace. versions in a `.python-version` file, separated by newlines or any whitespace.
Lines starting with a `#` are ignored.
### Locating the Python Installation ### Locating the Python Installation

View file

@ -9,7 +9,7 @@ if [ -e "$VERSION_FILE" ]; then
# Read the first non-whitespace word from the specified version file. # Read the first non-whitespace word from the specified version file.
# Be careful not to load it whole in case there's something crazy in it. # Be careful not to load it whole in case there's something crazy in it.
IFS="${IFS}"$'\r' IFS="${IFS}"$'\r'
words=($(cut -b 1-1024 "$VERSION_FILE" | sed 's/[[:space:]]*\([^[:space:]^[:space:]]*\).*/\1/')) words=($(cut -b 1-1024 "$VERSION_FILE" | sed -n 's/^[[:space:]]*\([^[:space:]#][^[:space:]]*\).*/\1/p'))
versions=("${words[@]}") versions=("${words[@]}")
if [ -n "$versions" ]; then if [ -n "$versions" ]; then

View file

@ -70,3 +70,15 @@ IN
run pyenv-version-file-read my-version run pyenv-version-file-read my-version
assert_success "3.3.5" assert_success "3.3.5"
} }
@test "skips comment lines" {
cat > my-version <<IN
3.9.3
3.8.9
# 3.4.0
#3.3.7
2.7.16
IN
run pyenv-version-file-read my-version
assert_success "3.9.3:3.8.9:2.7.16"
}