Make it possible to use fallback versions.

This commit is contained in:
Daniel Perez 2016-05-04 02:22:48 +09:00
parent 0c36c0036d
commit 3e31c40020
4 changed files with 48 additions and 49 deletions

View File

@ -15,13 +15,16 @@ if [ "$full_version" == "" ]; then
exit -1 exit -1
fi fi
IFS=' ' read -a versions <<< "$full_version"
IFS=':' read -a version_info <<< "$full_version" for version in "${versions[@]}"; do
if [ "${version_info[0]}" = "ref" ]; then IFS=':' read -a version_info <<< "$version"
if [ "${version_info[0]}" = "ref" ]; then
install_type="${version_info[0]}" install_type="${version_info[0]}"
version="${version_info[1]}" version="${version_info[1]}"
install_path=$(get_install_path $plugin_name $install_type $version) install_path=$(get_install_path $plugin_name $install_type $version)
elif [ "${version_info[0]}" = "path" ]; then elif [ "${version_info[0]}" = "path" ]; then
# This is for people who have the local source already compiled # This is for people who have the local source already compiled
# Like those who work on the language, etc # Like those who work on the language, etc
# We'll allow specifying path:/foo/bar/project in .tool-versions # We'll allow specifying path:/foo/bar/project in .tool-versions
@ -29,25 +32,20 @@ elif [ "${version_info[0]}" = "path" ]; then
install_type="path" install_type="path"
version="path" version="path"
install_path="${version_info[1]}" install_path="${version_info[1]}"
else else
install_type="version" install_type="version"
version="${version_info[0]}" version="${version_info[0]}"
install_path=$(get_install_path $plugin_name $install_type $version) install_path=$(get_install_path $plugin_name $install_type $version)
fi fi
if [ ! -d $install_path ]; then if [ ! -d $install_path ]; then
echo "$plugin_name $full_version not installed" echo "$plugin_name $version not installed"
exit 1 exit 1
fi fi
if [ ! -f ${install_path}/${executable_path} ]; then if [ -f ${install_path}/${executable_path} ]; then
echo "No such command in $full_version of $plugin_name" if [ -f ${plugin_path}/bin/exec-env ]; then
exit 1
fi
if [ -f ${plugin_path}/bin/exec-env ]; then
export ASDF_INSTALL_TYPE=$install_type export ASDF_INSTALL_TYPE=$install_type
export ASDF_INSTALL_VERSION=$version export ASDF_INSTALL_VERSION=$version
export ASDF_INSTALL_PATH=$install_path export ASDF_INSTALL_PATH=$install_path
@ -59,6 +57,11 @@ if [ -f ${plugin_path}/bin/exec-env ]; then
unset ASDF_INSTALL_VERSION unset ASDF_INSTALL_VERSION
unset ASDF_INSTALL_PATH unset ASDF_INSTALL_PATH
exec ${install_path}/${executable_path} "${@:3}" exec ${install_path}/${executable_path} "${@:3}"
else else
exec ${install_path}/${executable_path} "${@:3}" exec ${install_path}/${executable_path} "${@:3}"
fi fi
fi
done
echo "No such command in $full_version of $plugin_name"
exit 1

View File

@ -81,12 +81,12 @@ complete -f -c asdf -n '__fish_asdf_using_command reshim; and __fish_asdf_arg_nu
# local completion # local completion
complete -f -c asdf -n '__fish_asdf_needs_command' -a local -d "Set local version for a plugin" complete -f -c asdf -n '__fish_asdf_needs_command' -a local -d "Set local version for a plugin"
complete -f -c asdf -n '__fish_asdf_using_command local; and __fish_asdf_arg_number 2' -a '(asdf plugin-list)' complete -f -c asdf -n '__fish_asdf_using_command local; and __fish_asdf_arg_number 2' -a '(asdf plugin-list)'
complete -f -c asdf -n '__fish_asdf_using_command local; and __fish_asdf_arg_number 3' -a '(asdf list (__fish_asdf_arg_at 3))' complete -f -c asdf -n '__fish_asdf_using_command local; and test (count (commandline -opc)) -gt 2' -a '(asdf list (__fish_asdf_arg_at 3))'
# global completion # global completion
complete -f -c asdf -n '__fish_asdf_needs_command' -a global -d "Set global version for a plugin" complete -f -c asdf -n '__fish_asdf_needs_command' -a global -d "Set global version for a plugin"
complete -f -c asdf -n '__fish_asdf_using_command global; and __fish_asdf_arg_number 2' -a '(asdf plugin-list)' complete -f -c asdf -n '__fish_asdf_using_command global; and __fish_asdf_arg_number 2' -a '(asdf plugin-list)'
complete -f -c asdf -n '__fish_asdf_using_command global; and __fish_asdf_arg_number 3' -a '(asdf list (__fish_asdf_arg_at 3))' complete -f -c asdf -n '__fish_asdf_using_command global; and test (count (commandline -opc)) -gt 2' -a '(asdf list (__fish_asdf_arg_at 3))'
# misc # misc
complete -f -c asdf -n '__fish_asdf_needs_command' -l "help" -d "Displays help" complete -f -c asdf -n '__fish_asdf_needs_command' -l "help" -d "Displays help"

View File

@ -31,11 +31,6 @@ get_plugin_version() {
version_command() { version_command() {
local cmd=$1 local cmd=$1
if [ $# -gt 3 ]; then
echo usage: $cmd [PLUGIN] [VERSION]
exit 1
fi
local file local file
if [ $cmd = "global" ]; then if [ $cmd = "global" ]; then
file=$HOME/.tool-versions file=$HOME/.tool-versions
@ -64,7 +59,7 @@ version_command() {
get_plugin_version $cmd $file $plugin get_plugin_version $cmd $file $plugin
fi fi
local version=$3 local version=${@:3}
check_if_version_exists $plugin $version check_if_version_exists $plugin $version

View File

@ -116,6 +116,7 @@ get_preset_version_for() {
get_tool_version_from_file() { get_tool_version_from_file() {
local asdf_versions_path=$1 local asdf_versions_path=$1
local tool_name=$2 local tool_name=$2
local get_all_versions=$3
local matching_tool_version="" local matching_tool_version=""
local read_done=false local read_done=false
@ -128,7 +129,7 @@ get_tool_version_from_file() {
IFS=' ' read -a tool_info <<< $tool_line IFS=' ' read -a tool_info <<< $tool_line
local t_name=$(echo "${tool_info[0]}" | xargs) local t_name=$(echo "${tool_info[0]}" | xargs)
local t_version=$(echo "${tool_info[1]}" | xargs) local t_version=$(echo "${tool_info[@]:1}" | xargs)
if [ "$t_name" = "$tool_name" ] if [ "$t_name" = "$tool_name" ]
then then