-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
27 changed files
with
612 additions
and
307 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,144 @@ | ||
# For Korn shells (ksh, mksh, etc.), capture $_ (the final parameter passed to | ||
# the last command) straightaway, as it will contain the path to this script. | ||
# For Bash, ${BASH_SOURCE[0]} will be used to obtain this script's path. | ||
# For Zsh and others, $0 (the path to the shell or script) will be used. | ||
_under="$_" | ||
if [ -z "${ASDF_DIR:-}" ]; then | ||
if [ -n "${BASH_SOURCE[0]}" ]; then | ||
current_script_path="${BASH_SOURCE[0]}" | ||
elif [[ "$_under" == *".sh" ]]; then | ||
current_script_path="$_under" | ||
# shellcheck shell=sh | ||
# shellcheck disable=SC1007 | ||
|
||
# This file is the entrypoint for all POSIX-compatible shells. If `ASDF_DIR` is | ||
# not already set, this script is able to calculate it, but only if the shell is | ||
# either Bash, Zsh, and Ksh. For other shells, `ASDF_DIR` must be manually set. | ||
|
||
export ASDF_DIR="${ASDF_DIR:-}" | ||
|
||
if [ -z "$ASDF_DIR" ]; then | ||
if [ -n "${BASH_VERSION:-}" ]; then | ||
# Use BASH_SOURCE[0] to obtain the relative path to this source'd file. Since it's | ||
# a relative path, 'cd' to its dirname and use '$PWD' to obtain the fullpath. | ||
# Use 'builtin cd' to ensure user-defined 'cd()' functions aren't called. | ||
# Use variable '_asdf_old_dir' to avoid using subshells. | ||
|
||
_asdf_old_dir=$PWD | ||
# shellcheck disable=SC3028,SC3054 | ||
if ! CDPATH= builtin cd -- "${BASH_SOURCE[0]%/*}"; then | ||
printf '%s\n' 'asdf: Error: Failed to cd' >&2 | ||
unset -v _asdf_old_dir | ||
return 1 | ||
fi | ||
ASDF_DIR=$PWD | ||
if ! CDPATH= builtin cd -- "$_asdf_old_dir"; then | ||
printf '%s\n' 'asdf: Error: Failed to cd' >&2 | ||
unset -v _asdf_old_dir | ||
return 1 | ||
fi | ||
unset -v _asdf_old_dir | ||
elif [ -n "${ZSH_VERSION:-}" ]; then | ||
# Use '%x' to expand to path of current file. It must be prefixed | ||
# with '(%):-', so it expands in non-prompt-string contexts. | ||
|
||
# shellcheck disable=SC2296 | ||
ASDF_DIR=${(%):-%x} | ||
ASDF_DIR=${ASDF_DIR%/*} | ||
elif [ -n "${KSH_VERSION:-}" ] && [ -z "$PATHSEP" ]; then | ||
# Only the original KornShell (kornshell.com) has a '.sh.file' variable with the path | ||
# of the current file. To prevent errors with other variations, such as the MirBSD | ||
# Korn shell (mksh), test for 'PATHSEP' which is _not_ set on the original Korn Shell. | ||
|
||
# shellcheck disable=SC2296 | ||
ASDF_DIR=${.sh.file} | ||
ASDF_DIR=${ASDF_DIR%/*} | ||
fi | ||
fi | ||
|
||
if [ -z "$ASDF_DIR" ]; then | ||
printf "%s\n" "asdf: Error: Source directory could not be calculated. Please set \$ASDF_DIR manually before sourcing this file." >&2 | ||
return 1 | ||
fi | ||
|
||
if [ ! -d "$ASDF_DIR" ]; then | ||
printf "%s\n" "asdf: Error: Variable '\$ASDF_DIR' is not a directory: $ASDF_DIR" >&2 | ||
return 1 | ||
fi | ||
|
||
_asdf_bin="$ASDF_DIR/bin" | ||
_asdf_shims="${ASDF_DATA_DIR:-$HOME/.asdf}/shims" | ||
|
||
_asdf_should_prepend=no | ||
if [ -n "${ASDF_FORCE_PREPEND+x}" ]; then | ||
_asdf_should_prepend=$ASDF_FORCE_PREPEND | ||
else | ||
# If ASDF_FORCE_PREPEND is not set, then prepend by default on macOS | ||
# to workaround `path_helper`. | ||
if [ -n "${BASH_VERSION:-}" ] || [ -n "${ZSH_VERSION:-}" ]; then | ||
# shellcheck disable=SC3028 | ||
case $OSTYPE in | ||
darwin*) _asdf_should_prepend=yes ;; | ||
esac | ||
else | ||
current_script_path="$0" | ||
if ! _asdf_output=$(uname); then | ||
printf "%s\n" "asdf: Error: Failed to execute 'uname'" >&2 | ||
return 1 | ||
fi | ||
if [ "$_asdf_output" = 'Darwin' ]; then | ||
_asdf_should_prepend=yes | ||
fi | ||
unset -v _asdf_output | ||
fi | ||
fi | ||
|
||
# If prepending is enabled, remove any existing instances of asdf from PATH so | ||
# the prepending done after is always at the frontmost part of the PATH. | ||
if [ "$_asdf_should_prepend" = 'yes' ]; then | ||
if [ -n "${BASH_VERSION:-}" ] || [ -n "${ZSH_VERSION:-}" ]; then | ||
# shellcheck disable=SC3060 | ||
case ":$PATH:" in | ||
*":${_asdf_bin}:"*) PATH=${PATH//$_asdf_bin:/} ;; | ||
esac | ||
# shellcheck disable=SC3060 | ||
case ":$PATH:" in | ||
*":${_asdf_shims}:"*) PATH=${PATH//$_asdf_shims:/} ;; | ||
esac | ||
else | ||
_path=${PATH}: | ||
_new_path= | ||
while [ -n "$_path" ]; do | ||
_part=${_path%%:*} | ||
_path=${_path#*:} | ||
|
||
if [ "$_part" = "$_asdf_bin" ] || [ "$_part" = "$_asdf_shims" ]; then | ||
continue | ||
fi | ||
|
||
ASDF_DIR="$(dirname "$current_script_path")" | ||
_new_path="$_new_path${_new_path:+:}$_part" | ||
done | ||
PATH=$_new_path | ||
unset -v _path _new_path _part | ||
fi | ||
fi | ||
export ASDF_DIR | ||
# shellcheck disable=SC2016 | ||
[ -d "$ASDF_DIR" ] || printf "%s\n" "$ASDF_DIR is not a directory" | ||
|
||
# Add asdf to PATH | ||
# | ||
# if in $PATH, remove, regardless of if it is in the right place (at the front) or not. | ||
# replace all occurrences - ${parameter//pattern/string} | ||
ASDF_BIN="${ASDF_DIR}/bin" | ||
ASDF_USER_SHIMS="${ASDF_DATA_DIR:-$HOME/.asdf}/shims" | ||
[[ ":$PATH:" == *":${ASDF_BIN}:"* ]] && PATH="${PATH//$ASDF_BIN:/}" | ||
[[ ":$PATH:" == *":${ASDF_USER_SHIMS}:"* ]] && PATH="${PATH//$ASDF_USER_SHIMS:/}" | ||
# add to front of $PATH | ||
PATH="${ASDF_BIN}:$PATH" | ||
PATH="${ASDF_USER_SHIMS}:$PATH" | ||
|
||
# shellcheck source=lib/asdf.sh | ||
# Load the asdf wrapper function | ||
. "${ASDF_DIR}/lib/asdf.sh" | ||
|
||
unset _under current_script_path ASDF_BIN ASDF_USER_SHIMS | ||
unset -v _asdf_should_prepend | ||
|
||
case ":$PATH:" in | ||
*":$_asdf_bin:"*) : ;; | ||
*) PATH="$_asdf_bin:$PATH" ;; | ||
esac | ||
case ":$PATH:" in | ||
*":$_asdf_shims:"*) : ;; | ||
*) PATH="$_asdf_shims:$PATH" ;; | ||
esac | ||
|
||
unset -v _asdf_bin _asdf_shims | ||
|
||
# The asdf function is a wrapper so we can export variables | ||
asdf() { | ||
case $1 in | ||
"shell") | ||
if ! shift; then | ||
printf '%s\n' 'asdf: Error: Failed to shift' >&2 | ||
return 1 | ||
fi | ||
|
||
# Invoke command that needs to export variables. | ||
eval "$(asdf export-shell-version sh "$@")" # asdf_allow: eval | ||
;; | ||
*) | ||
# Forward other commands to asdf script. | ||
command asdf "$@" # asdf_allow: ' asdf ' | ||
;; | ||
esac | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,8 @@ | ||
# enables the use of .ruby-version like files used by other version managers | ||
# See the docs for explanations: https://asdf-vm.com/manage/configuration.html | ||
|
||
legacy_version_file = no | ||
use_release_candidates = no | ||
always_keep_download = no | ||
plugin_repository_last_check_duration = 60 | ||
disable_plugin_short_name_repository = no | ||
concurrency = auto |
Oops, something went wrong.