Compare commits

...

5 Commits

Author SHA1 Message Date
Bruno Sales Cardoso
90fccb06cb
Merge 36fd9f8a4b into 9c12b79969 2024-12-18 15:33:00 -05:00
Bruno Sales Cardoso
36fd9f8a4b
Merge branch 'master' into master 2024-10-23 18:34:45 +01:00
Bruno Sales Cardoso
437453110c
Merge branch 'master' into master 2024-08-30 18:24:09 +01:00
Bruno Sales Cardoso
5c30032f44
Update test/version_commands.bats 2024-07-22 09:10:09 +01:00
Bruno Cardoso
5c69d8d852 Allowing find the closest version if the exact version is not found 2024-07-20 11:06:57 +01:00
3 changed files with 38 additions and 2 deletions

View File

@ -53,8 +53,12 @@ version_command() {
fi
if ! (check_if_version_exists "$plugin_name" "$version"); then
version_not_installed_text "$plugin_name" "$version" 1>&2
exit 1
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")

View File

@ -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

View File

@ -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 not 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 ]