[zsh] Clean up path functions; init_path wasn't being called after definition

This commit is contained in:
Eryn Wells 2023-03-30 10:38:48 -07:00
parent 0aaffa1cca
commit aa6e81fdeb
3 changed files with 46 additions and 27 deletions

View file

@ -3,27 +3,37 @@
append_to_path() { append_to_path() {
local should_export_path=1 local should_export_path=1
local verbose=0
while getopts "e" opt; do while getopts "ve" opt; do
case $opt in case $opt in
"e") should_export_path=1;; "e") should_export_path=1;;
"+e") should_export_path=0;; "+e") should_export_path=0;;
*) >&2 echo "$0: unknown option '$opt'" "v") verbose=1;;
*) ;;
esac esac
done done
local result=1
local path_to_add=$@[$OPTIND] local path_to_add=$@[$OPTIND]
if [[ -d "$path_to_add" ]]; then if [[ -d "$path_to_add" ]]; then
path+="$path_to_add" if (( $verbose )); then
echo "Appending $path_to_add to \$path"
if (( $should_export_path )); then
export path
fi fi
path+="$path_to_add"
return 1 else
if (( $verbose )); then
echo "$path_to_add doesn't exist"
fi
result=0
fi fi
return 0 if (( $should_export_path )); then
export path
fi
return $result
} }
append_to_path "$@" append_to_path "$@"

View file

@ -1,11 +1,9 @@
# Eryn Wells <eryn@erynwells.me> # Eryn Wells <eryn@erynwells.me>
# vim:ft=zsh:
autoload -Uz prepend_to_path
autoload -Uz append_to_path autoload -Uz append_to_path
init_path() { init_path() {
local should_be_verbose=1 local should_be_verbose=0
while getopts "v" opt; do while getopts "v" opt; do
case $opt in case $opt in
@ -15,7 +13,10 @@ init_path() {
esac esac
done done
export path=() local verbose_flag
if (( $should_be_verbose )); then
verbose_flag='-v'
fi
for p in \ for p in \
"$HOME/bin" \ "$HOME/bin" \
@ -35,13 +36,12 @@ init_path() {
"/usr/sbin" \ "/usr/sbin" \
"/sbin" "/sbin"
do do
append_to_path +e "$p" append_to_path +e $verbose_flag "$p"
if (( $? && $should_be_verbose )); then
echo $p
fi
done done
export path export path
rehash rehash
} }
init_path "$@"

View file

@ -1,29 +1,38 @@
# Eryn Wells <eryn@erynwells.me> # Eryn Wells <eryn@erynwells.me>
# vim:ft=zsh:
prepend_to_path() { prepend_to_path() {
local should_export_path=1 local should_export_path=1
local should_be_verbose=0
while getopts "e" opt; do while getopts "ve" opt; do
case $opt in case $opt in
"e") should_export_path=1;; "e") should_export_path=1;;
"+e") should_export_path=0;; "+e") should_export_path=0;;
*) >&2 echo "$0: unknown option '$opt'" "v") should_be_verbose=1;;
*) ;;
esac esac
done done
local result=1
local path_to_add=$@[$OPTIND] local path_to_add=$@[$OPTIND]
if [[ -d "$path_to_add" ]]; then if [[ -d "$path_to_add" ]]; then
path=("$path_to_add" $path) if (( $verbose )); then
echo "Prepending $path_to_add to \$path"
if (( $should_export_path )); then
export path
fi fi
path=("$path_to_add" $path)
return 0 else
if (( $verbose )); then
echo "$path_to_add doesn't exist"
fi
result=0
fi fi
return 1 if (( $should_export_path )); then
export path
fi
return $result
} }
prepend_to_path "$@" prepend_to_path "$@"