From 641916270be7f8e6ec29deb3d22f4020398e554c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Mon, 5 Apr 2021 10:22:08 +0300 Subject: [PATCH] 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. --- README.md | 1 + libexec/pyenv-version-file-read | 2 +- test/version-file-read.bats | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c6154356..b2f66684 100644 --- a/README.md +++ b/README.md @@ -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 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. +Lines starting with a `#` are ignored. ### Locating the Python Installation diff --git a/libexec/pyenv-version-file-read b/libexec/pyenv-version-file-read index ae24345c..214d1ef4 100755 --- a/libexec/pyenv-version-file-read +++ b/libexec/pyenv-version-file-read @@ -9,7 +9,7 @@ if [ -e "$VERSION_FILE" ]; then # 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. 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[@]}") if [ -n "$versions" ]; then diff --git a/test/version-file-read.bats b/test/version-file-read.bats index d31037c2..a7b184de 100644 --- a/test/version-file-read.bats +++ b/test/version-file-read.bats @@ -70,3 +70,15 @@ IN run pyenv-version-file-read my-version assert_success "3.3.5" } + +@test "skips comment lines" { + cat > my-version <