mirror of
https://github.com/asdf-vm/asdf.git
synced 2024-12-23 20:05:09 -07:00
Allowing find the closest version if the exact version is not found
This commit is contained in:
parent
ccdd47df9b
commit
5c69d8d852
@ -53,9 +53,13 @@ version_command() {
|
||||
fi
|
||||
|
||||
if ! (check_if_version_exists "$plugin_name" "$version"); then
|
||||
closest_version=$(try_get_closest_version "$plugin_name" "$version")
|
||||
if [[ ! $closest_version ]]; then
|
||||
version_not_installed_text "$plugin_name" "$version" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
version="$closest_version"
|
||||
fi
|
||||
|
||||
resolved_versions+=("$version")
|
||||
done
|
||||
|
@ -137,6 +137,26 @@ check_if_version_exists() {
|
||||
fi
|
||||
}
|
||||
|
||||
try_get_closest_version() {
|
||||
local plugin_name=$1
|
||||
local partial_version=$2
|
||||
local versions
|
||||
|
||||
versions=$(list_installed_versions "$plugin_name")
|
||||
|
||||
if [ -n "${versions}" ]; then
|
||||
for version in $versions; do
|
||||
if [[ $version == $partial_version* ]]; then
|
||||
matched_versions+=("$version")
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ ${#matched_versions[@]} -eq 1 ]; then
|
||||
printf "%s" "${matched_versions[0]}"
|
||||
fi
|
||||
}
|
||||
|
||||
version_not_installed_text() {
|
||||
local plugin_name=$1
|
||||
local version=$2
|
||||
|
@ -204,6 +204,18 @@ teardown() {
|
||||
[ "$(cat "$HOME/.tool-versions")" = "dummy 1.1.0" ]
|
||||
}
|
||||
|
||||
@test "global should create a global .tool-versions file when a close version is found" {
|
||||
run asdf global "dummy" "1.1"
|
||||
[ "$status" -eq 0 ]
|
||||
[ "$(cat "$HOME/.tool-versions")" = "dummy 1.1.0" ]
|
||||
}
|
||||
|
||||
@test "global should emit an error when a single close plugin version is found" {
|
||||
run asdf global "dummy" "1"
|
||||
[ "$status" -eq 1 ]
|
||||
[ "$output" = "version 1 is not installed for dummy" ]
|
||||
}
|
||||
|
||||
@test "[global - dummy_plugin] with latest should use the latest installed version" {
|
||||
run asdf global "dummy" "latest"
|
||||
[ "$status" -eq 0 ]
|
||||
|
Loading…
Reference in New Issue
Block a user