asdf/lib/utils.sh

124 lines
2.4 KiB
Bash
Raw Normal View History

2014-11-29 09:28:11 -07:00
asdf_version() {
echo "0.1"
}
asdf_dir() {
2015-05-17 02:09:18 -07:00
if [ -z $ASDF_DIR ]; then
local current_script_path=${BASH_SOURCE[0]}
export ASDF_DIR=$(cd $(dirname $(dirname $current_script_path)); echo $(pwd))
fi
echo $ASDF_DIR
2014-11-29 09:28:11 -07:00
}
2014-12-13 09:26:56 -07:00
get_install_path() {
2015-05-29 09:24:31 -07:00
local plugin=$1
2014-12-13 09:26:56 -07:00
local install_type=$2
local version=$3
2015-05-29 09:24:31 -07:00
mkdir -p $(asdf_dir)/installs/${plugin}
2014-12-13 09:26:56 -07:00
2014-12-14 01:13:43 -07:00
if [ $install_type = "version" ]
then
2015-05-29 09:24:31 -07:00
echo $(asdf_dir)/installs/${plugin}/${version}
2014-12-14 01:13:43 -07:00
else
2015-05-29 09:24:31 -07:00
echo $(asdf_dir)/installs/${plugin}/${install_type}-${version}
2014-12-14 01:13:43 -07:00
fi
2014-12-13 09:26:56 -07:00
}
2015-05-17 11:20:51 -07:00
check_if_plugin_exists() {
2014-11-29 09:28:11 -07:00
if [ ! -d $1 ]
then
2015-05-17 11:20:51 -07:00
display_error "No such plugin"
2014-11-29 09:28:11 -07:00
exit 1
fi
}
2014-12-14 01:13:43 -07:00
get_version_part() {
IFS='@' read -a version_info <<< "$1"
echo ${version_info[$2]}
}
2015-05-17 11:20:51 -07:00
get_plugin_path() {
echo $(asdf_dir)/plugins/$1
2014-11-29 09:28:11 -07:00
}
display_error() {
echo $1
}
2015-05-14 03:13:04 -07:00
get_asdf_versions_file_path() {
local asdf_tool_versions_path=""
local search_path=$(pwd)
while [ "$search_path" != "/" ]; do
2015-05-17 10:51:23 -07:00
if [ -f "$search_path/.tool-versions" ]; then
asdf_tool_versions_path="$search_path/.tool-versions"
break
fi
search_path=$(dirname $search_path)
done
echo $asdf_tool_versions_path
2015-05-14 03:13:04 -07:00
}
get_preset_version_for() {
2015-06-24 07:03:25 -07:00
local tool_name=$1
2015-05-14 03:13:04 -07:00
local asdf_versions_path=$(get_asdf_versions_file_path)
2015-06-24 07:03:25 -07:00
local matching_tool_version=""
2015-05-14 03:13:04 -07:00
if [ "$asdf_versions_path" != "" ]; then
2015-06-24 07:03:25 -07:00
matching_tool_version=$(get_tool_version_from_file $asdf_versions_path $tool_name)
fi
# If there's no global .tool-versions file
# then we create it and return blank
if [ "$matching_tool_version" = "" ]; then
local global_tool_versions_path=$HOME/.tool-versions
if [ ! -f $global_tool_versions_path ]; then
touch $global_tool_versions_path
else
2015-06-24 07:03:25 -07:00
matching_tool_version=$(get_tool_version_from_file $global_tool_versions_path $tool_name)
fi
fi
echo $matching_tool_version
}
2015-06-24 07:03:25 -07:00
get_tool_version_from_file() {
local asdf_versions_path=$1
local tool_name=$2
local matching_tool_version=""
local read_done=false
until $read_done; do
read tool_line || read_done=true
2015-06-24 10:13:15 -07:00
if $read_done ; then
break;
fi
2015-05-14 03:13:04 -07:00
IFS=' ' read -a tool_info <<< $tool_line
2015-06-24 07:03:25 -07:00
local t_name=$(echo "${tool_info[0]}" | xargs)
local t_version=$(echo "${tool_info[1]}" | xargs)
2015-05-14 03:13:04 -07:00
2015-06-24 07:03:25 -07:00
if [ "$t_name" = "$tool_name" ]
2015-05-17 02:09:18 -07:00
then
2015-06-24 07:03:25 -07:00
matching_tool_version=$t_version
2015-05-14 03:13:04 -07:00
break;
fi
done < $asdf_versions_path
echo $matching_tool_version
2015-05-14 03:13:04 -07:00
}