fix: Sed improvements (#1087)

This commit is contained in:
Trevor Brown 2021-11-15 03:03:53 -05:00 committed by GitHub
parent 41162849cf
commit 4b93bc81aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 12 deletions

View File

@ -14,20 +14,17 @@ EOF
} }
asdf_extension_cmds() { asdf_extension_cmds() {
local plugins_path ext_cmd_path ext_cmds plugin local plugins_path plugin_path ext_cmd_path ext_cmds plugin
plugins_path="$(get_plugin_path)" plugins_path="$(get_plugin_path)"
# use find instead of ls -1 for plugin_path in "$plugins_path"/*; do
# shellcheck disable=SC2012 plugin="$(basename "$plugin_path")"
for plugin in $(ls -1 "$plugins_path" 2>/dev/null | sed "s#^$plugins_path/##"); do ext_cmd_path="$plugin_path/lib/commands"
ext_cmd_path="$plugins_path/$plugin/lib/commands" ext_cmds="$(find "$ext_cmd_path" -name "command*.bash")"
ext_cmds=$(
ls -1 "$ext_cmd_path"/command*.bash 2>/dev/null |
sed "s#$ext_cmd_path/##"
)
if [[ -n $ext_cmds ]]; then if [[ -n $ext_cmds ]]; then
printf "\\nPLUGIN %s\\n" "$plugin" printf "\\nPLUGIN %s\\n" "$plugin"
for ext_cmd in $ext_cmds; do for ext_cmd in $ext_cmds; do
sed "s/-/ /g;s/.bash//;s/command-*/ asdf $plugin/;" <<<"$ext_cmd" ext_cmd_name="$(basename "$ext_cmd")"
sed "s/-/ /g;s/.bash//;s/command-*/ asdf $plugin/;" <<<"$ext_cmd_name"
done | sort done | sort
fi fi
done done

View File

@ -289,7 +289,7 @@ get_executable_path() {
check_if_version_exists "$plugin_name" "$version" check_if_version_exists "$plugin_name" "$version"
if [ "$version" = "system" ]; then if [ "$version" = "system" ]; then
path=$(sed -e "s|$(asdf_data_dir)/shims||g; s|::|:|g" <<<"$PATH") path=$(remove_path_from_path "$PATH" "$(asdf_data_dir)/shims")
cmd=$(basename "$executable_path") cmd=$(basename "$executable_path")
cmd_path=$(PATH=$path command -v "$cmd" 2>&1) cmd_path=$(PATH=$path command -v "$cmd" 2>&1)
# shellcheck disable=SC2181 # shellcheck disable=SC2181
@ -755,7 +755,7 @@ with_shim_executable() {
run_within_env() { run_within_env() {
local path local path
path=$(sed -e "s|$(asdf_data_dir)/shims||g; s|::|:|g" <<<"$PATH") path=$(remove_path_from_path "$PATH" "$(asdf_data_dir)/shims")
executable_path=$(PATH=$path command -v "$shim_name") executable_path=$(PATH=$path command -v "$shim_name")
@ -806,3 +806,20 @@ with_shim_executable() {
return 126 return 126
} }
substitute() {
# Use Bash substituion rather than sed as it will handle escaping of all
# strings for us.
local input=$1
local find_str=$2
local replace=$3
printf "%s" "${input//"$find_str"/"$replace"}"
}
remove_path_from_path() {
# A helper function for removing an arbitrary path from the PATH variable.
# Output is a new string suitable for assignment to PATH
local PATH=$1
local path=$2
substitute "$PATH" "$path" "" | sed -e "s|::|:|g"
}