lib/helpers: cleanup

- Improve `pushd`/`popd` somewhat
- local some parameters
- Lose weird Mac-specific alternate shell startup file (Bash loads startup files on Mac the same as it does on any other *nix system.)
pull/1934/head
John D Pell 2022-01-03 10:11:44 -08:00 committed by John D Pell
parent 003b0ce802
commit 4c473853e9
1 changed files with 40 additions and 52 deletions

View File

@ -256,9 +256,8 @@ function _bash-it_update_migrate_and_restart() {
_bash-it-migrate
echo ""
echo "All done, enjoy!"
# Don't forget to restore the original pwd!
# shellcheck disable=SC2164
popd &> /dev/null
# Don't forget to restore the original pwd (called from `_bash-it-update-`)!
popd > /dev/null || return
_bash-it-restart
else
echo "Error updating Bash-it, please, check if your Bash-it installation folder (${BASH_IT}) is clean."
@ -301,8 +300,7 @@ function _bash-it-update-() {
if [[ -z "$TARGET" ]]; then
echo "Can not find tags, so can not update to latest stable version..."
# shellcheck disable=SC2164
popd &> /dev/null
popd > /dev/null || return
return
fi
else
@ -365,8 +363,7 @@ function _bash-it-update-() {
echo "Bash-it is up to date, nothing to do!"
fi
fi
# shellcheck disable=SC2164
popd &> /dev/null
popd > /dev/null || return
}
function _bash-it-migrate() {
@ -398,7 +395,7 @@ function _bash-it-migrate() {
done
done
if [[ -n "$BASH_IT_AUTOMATIC_RELOAD_AFTER_CONFIG_CHANGE" ]]; then
if [[ -n "${BASH_IT_AUTOMATIC_RELOAD_AFTER_CONFIG_CHANGE:-}" ]]; then
_bash-it-reload
fi
@ -412,7 +409,7 @@ function _bash-it-version() {
_about 'shows current Bash-it version'
_group 'lib'
cd "${BASH_IT}" || return
pushd "${BASH_IT?}" > /dev/null || return
if [[ -z "${BASH_IT_REMOTE:-}" ]]; then
BASH_IT_REMOTE="origin"
@ -443,7 +440,7 @@ function _bash-it-version() {
echo "Compare to latest: $BASH_IT_GIT_URL/compare/$TARGET...master"
cd - &> /dev/null || return
popd > /dev/null || return
}
function _bash-it-doctor() {
@ -538,7 +535,7 @@ function _bash-it-profile-save() {
echo "" >> "$profile_path"
echo "# $subdirectory" >> "$profile_path"
fi
echo "$subdirectory $enabled_file_clean" >> "$profile_path"
echo "$subdirectory $enabled_file" >> "$profile_path"
fi
done
done
@ -568,7 +565,8 @@ _bash-it-profile-load-parse-profile() {
local subdirectory=${line[0]}
local component=${line[1]}
local to_enable=$(command ls "${BASH_IT}/$subdirectory/available/$component".*bash 2> /dev/null | head -1)
local to_enable
to_enable=$(command ls "${BASH_IT}/$subdirectory/available/$component".*bash 2> /dev/null | head -1)
# Ignore botched lines
if [[ -z "${to_enable}" ]]; then
echo -e "${echo_orange?}Bad line(#$num) in profile, aborting load...${echo_reset_color?}"
@ -658,14 +656,11 @@ function _bash-it-restart() {
saved_pwd="${PWD}"
case $OSTYPE in
darwin*)
if shopt -q login_shell; then
init_file=.bash_profile
;;
*)
else
init_file=.bashrc
;;
esac
fi
exec "${0/-/}" --rcfile <(echo "source \"$HOME/$init_file\"; cd \"$saved_pwd\"")
}
@ -675,19 +670,15 @@ function _bash-it-reload() {
pushd "${BASH_IT?}" > /dev/null || return
case $OSTYPE in
darwin*)
# shellcheck disable=SC1090
if shopt -q login_shell; then
# shellcheck source-path=$HOME
source ~/.bash_profile
;;
*)
# shellcheck disable=SC1090
else
# shellcheck source-path=$HOME
source ~/.bashrc
;;
esac
# shellcheck disable=SC2164
popd
fi
popd > /dev/null || return
}
_bash-it-determine-component-status-from-path() {
@ -698,7 +689,7 @@ _bash-it-determine-component-status-from-path() {
# Check for both the old format without the load priority, and the extended format with the priority
local enabled_files enabled_file
enabled_file="${f##*/}"
enabled_file_clean=$(echo "$enabled_file" | sed -e 's/\(.*\)\..*\.bash/\1/g')
enabled_file="${enabled_file%.*.bash}"
enabled_files=$(sort <(compgen -G "${BASH_IT}/enabled/*$BASH_IT_LOAD_PRIORITY_SEPARATOR${enabled_file}") <(compgen -G "${BASH_IT}/$subdirectory/enabled/${enabled_file}") <(compgen -G "${BASH_IT}/$subdirectory/enabled/*$BASH_IT_LOAD_PRIORITY_SEPARATOR${enabled_file}") | wc -l)
if [[ "$enabled_files" -gt 0 ]]; then
@ -726,7 +717,7 @@ function _bash-it-describe() {
printf "%-20s%-10s%s\n" "$column_header" 'Enabled?' 'Description'
for f in "${BASH_IT}/$subdirectory/available"/*.bash; do
_bash-it-determine-component-status-from-path "$f"
printf "%-20s%-10s%s\n" "$enabled_file_clean" " [$enabled]" "$(metafor "about-$file_type" < "$f")"
printf "%-20s%-10s%s\n" "$enabled_file" " [$enabled]" "$(metafor "about-$file_type" < "$f")"
done
printf '\n%s\n' "to enable $preposition $file_type, do:"
printf '%s\n' "$ bash-it enable $file_type <$file_type name> [$file_type name]... -or- $ bash-it enable $file_type all"
@ -832,7 +823,7 @@ function _disable-thing() {
_bash-it-clean-component-cache "${file_type}"
if [ "$file_entity" = "all" ]; then
if [[ "$file_entity" = "all" ]]; then
printf '%s\n' "$file_entity $(_bash-it-pluralize-component "$file_type") disabled."
else
printf '%s\n' "$file_entity disabled."
@ -898,7 +889,6 @@ function _enable-thing() {
fi
if [[ "$file_entity" == "all" ]]; then
_bash_it_config_file
for _bash_it_config_file in "${BASH_IT}/$subdirectory/available"/*.bash; do
to_enable="$(basename "$_bash_it_config_file" ".$file_type.bash")"
if [[ "$file_type" == "alias" ]]; then
@ -921,7 +911,7 @@ function _enable-thing() {
return
fi
enabled_plugin_global="$(command compgen -G "${BASH_IT}/enabled/[0-9][0-9][0-9]${BASH_IT_LOAD_PRIORITY_SEPARATOR}${to_enable}" 2> /dev/null | head -1)"
enabled_plugin_global="$(command compgen -G "${BASH_IT}/enabled/[0-9][0-9][0-9]${BASH_IT_LOAD_PRIORITY_SEPARATOR?}${to_enable}" 2> /dev/null | head -1)"
if [[ -n "$enabled_plugin_global" ]]; then
printf '%s\n' "$file_entity is already enabled."
return
@ -1047,7 +1037,6 @@ function all_groups() {
declare -f | metafor group | sort -u
}
if ! _command_exists pathmunge; then
function pathmunge() {
about 'prevent duplicate directories in you PATH variable'
group 'helpers'
@ -1062,7 +1051,6 @@ if ! _command_exists pathmunge; then
fi
fi
}
fi
# `_bash-it-find-in-ancestor` uses the shell's ability to run a function in
# a subshell to simplify our search to a simple `cd ..` and `[[ -r $1 ]]`