mirror of
https://github.com/asdf-vm/asdf.git
synced 2024-11-15 09:38:16 -07:00
feat(latest): adds the flag --all to the latest command (#1096)
This commit is contained in:
parent
5992abb09e
commit
f85fef533f
@ -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 "$@"
|
||||
|
@ -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 ]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user