Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ jobs:
run: |
./test/test_install_version.sh
./test/test_install_version_by_prefix.sh
./test/test_dvmrc_file.sh
./test/test_alias.sh
./test/test_uninstall_version.sh
./test/test_ls_remote.sh
Expand Down
24 changes: 14 additions & 10 deletions dvm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -400,34 +400,39 @@ export DVM_VERSION="v0.9.0"
# Try to read version from .dvmrc file in the current working directory or
# the user home directory.
dvm_get_version_from_dvmrc() {
if dvm_read_dvmrc_file "$PWD"
if dvm_read_dvmrc_file "$PWD" ".dvmrc" || dvm_read_dvmrc_file "$PWD" ".deno-version"
then
return 0
fi

if [ "$PWD" != "$HOME" ] && dvm_read_dvmrc_file "$HOME"
if [ "$PWD" != "$HOME" ]
then
return 0
if dvm_read_dvmrc_file "$HOME" ".dvmrc" || dvm_read_dvmrc_file "$HOME" ".deno-version"
then
return 0
fi
fi

return 1
}

# Read .dvmrc file from the specified path, and set it to
# Read .dvmrc or .deno-version file from the specified path, and set it to
# `DVM_TARGET_VERSION` variable if the file is not empty.
# Parameters:
# - $1: path directory
# - $2: file name
dvm_read_dvmrc_file() {
local version
local file_dir="$1"
local file="$file_dir/.dvmrc"
local filename="$2"
local file="$file_dir/$filename"

if [ -f "$file" ]
then
dvm_debug "reading version from file $file"
dvm_debug "$file found"
version=$(head -n 1 "$file")
else
dvm_debug "no .dvmrc found in $file_dir"
dvm_debug "no $filename found in $file_dir"
return 1
fi

Expand All @@ -437,10 +442,9 @@ export DVM_VERSION="v0.9.0"
DVM_TARGET_VERSION="$version"
return 0
else
dvm_debug "empty .dvmrc file $file_dir"
dvm_debug "empty $filename file $file_dir"
return 1
fi

return 1
}
}
}
Expand Down
24 changes: 24 additions & 0 deletions test/test_dvmrc_file.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

dvm_test_error() {
echo "[ERR]" "$@"
exit 1
}

# shellcheck disable=SC1091
\. ./dvm.sh || dvm_test_error "failed to install dvm"

echo "v1.45.0" > .dvmrc
dvm use || dvm_test_error "run 'dvm use' failed"
dvm ls | grep "\-> v1.45.0" || dvm_test_error "run 'dvm ls' failed"
rm .dvmrc

echo "v1.40.0" > .deno-version
dvm use || dvm_test_error "run 'dvm use' failed"
dvm ls | grep "\-> v1.40.0" || dvm_test_error "run 'dvm ls' failed"
rm .deno-version

echo "v1.44.4" > "$HOME/.dvmrc"
dvm use || dvm_test_error "run 'dvm use' failed"
dvm ls | grep "\-> v1.44.4" || dvm_test_error "run 'dvm ls' failed"
rm "$HOME/.dvmrc"