feat(latest): adds the flag --all to the latest command (#1096)

This commit is contained in:
Alberto de Murga 2021-12-05 13:41:27 +01:00 committed by GitHub
parent 5992abb09e
commit f85fef533f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 58 additions and 0 deletions

View File

@ -7,6 +7,10 @@ latest_command() {
local query=$2
local plugin_path
if [ "$plugin_name" == "--all" ]; then
latest_all
fi
[[ -z $query ]] && query="$DEFAULT_QUERY"
plugin_path=$(get_plugin_path "$plugin_name")
@ -35,4 +39,49 @@ latest_command() {
printf "%s\n" "$versions"
}
latest_all() {
local plugins_path
plugins_path=$(get_plugin_path)
if ls "$plugins_path" &>/dev/null; then
for plugin_path in "$plugins_path"/*; do
plugin_name=$(basename "$plugin_path")
# Retrieve the version of the plugin
local version
if [ -f "${plugin_path}/bin/latest-stable" ]; then
# We can't filter by a concrete query because different plugins might
# have different queries.
version=$("${plugin_path}"/bin/latest-stable "")
if [ -z "${version}" ]; then
version="unknown"
fi
else
# pattern from xxenv-latest (https://github.com/momo-lab/xxenv-latest)
version=$(asdf list-all "$plugin_name" |
grep -vE "(^Available version:|-src|-dev|-latest|-stm|[-\\.]rc|-alpha|-beta|[-\\.]pre|-next|(a|b|c)[0-9]+|snapshot|master)" |
sed 's/^[[:space:]]\+//' |
tail -1)
if [ -z "${version}" ]; then
version="unknown"
fi
fi
local installed_status
installed_status="missing"
local installed_versions
installed_versions=$(list_installed_versions "$plugin_name")
if ! printf '%s\n' "$installed_versions" | grep -q "^$version\$"; then
installed_status="installed"
fi
printf "%s\\t%s\\t%s\\n" "$plugin_name" "$version" "$installed_status"
done
else
printf "%s\\n" 'No plugins installed'
fi
exit 0
}
latest_command "$@"

View File

@ -59,3 +59,12 @@ teardown() {
[ "$(echo "No compatible versions available (legacy-dummy 3)")" == "$output" ]
[ "$status" -eq 1 ]
}
################################
#### latest --all ####
################################
@test "[latest_command - all plugins] shows the latest stable version of all plugins" {
run asdf latest --all
[ "$(echo -e "dummy\t2.0.0\tinstalled\nlegacy-dummy\t2.0.0\tinstalled\n")" == "$output" ]
[ "$status" -eq 0 ]
}