diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 538c9fb..519ddbe 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -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 diff --git a/dvm.sh b/dvm.sh index 25a6962..8793ae4 100755 --- a/dvm.sh +++ b/dvm.sh @@ -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 @@ -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 } } } diff --git a/test/test_dvmrc_file.sh b/test/test_dvmrc_file.sh new file mode 100755 index 0000000..1960806 --- /dev/null +++ b/test/test_dvmrc_file.sh @@ -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"