Skip to content

Commit

Permalink
feat(latest): adds the flag --all to the latest command (#1096)
Browse files Browse the repository at this point in the history
  • Loading branch information
threkk committed Dec 5, 2021
1 parent 5992abb commit f85fef5
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
49 changes: 49 additions & 0 deletions lib/commands/command-latest.bash
Expand Up @@ -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")
Expand Down Expand Up @@ -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 "$@"
9 changes: 9 additions & 0 deletions test/latest_command.bats
Expand Up @@ -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 ]
}

0 comments on commit f85fef5

Please sign in to comment.