Fix bugs on empty input

This commit is contained in:
dabruh 2024-04-18 20:37:00 +02:00
parent c7145e8b4a
commit 4973b9f4d2
1 changed files with 12 additions and 8 deletions

View File

@ -16,6 +16,7 @@ export CHROME_EXECUTABLE=chromium # For Flutter
export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}" export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
export XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/share}"
# Clean home: # Clean home:
export ANDROID_HOME="$XDG_DATA_HOME/Android/Sdk" export ANDROID_HOME="$XDG_DATA_HOME/Android/Sdk"
@ -64,26 +65,27 @@ rm_env_path_entry() {
del_entry="${2:?Missing entry to delete}" del_entry="${2:?Missing entry to delete}"
new_entries="" new_entries=""
echo "$src_entries" | $_tr ':' '\n' | while read -r entry; do for entry in $(echo "$src_entries" | $_tr ':' ' '); do
if [ "$entry" != "$del_entry" ]; then if [ "$entry" != "$del_entry" ]; then
new_entries="$new_entries:$entry" new_entries="$new_entries:$entry"
fi fi
done done
trim "$new_entries" ":" [ -n "$new_entries" ] && trim "$new_entries" ":"
echo
} }
modify_env_path() { modify_env_path() {
mode="${1:?Missing mode}" mode="${1:?Missing mode}"
entries="${2:?Missing entries}" entries="$2"
change="${3:?Missing change}" change="${3:?Missing change}"
entries="$(trim "$entries" ":")" [ -n "$entries" ] && entries="$(trim "$entries" ":")"
case "$mode" in case "$mode" in
prepend) prepend)
temp_entries="" # Will hold the new entries in the correct order temp_entries="" # Will hold the new entries in the correct order
echo "$change" | $_tr ':' '\n' | while read -r entry; do for entry in $(echo "$change" | $_tr ':' ' '); do
[ -z "$entry" ] && continue # Skip empty entries [ -z "$entry" ] && continue # Skip empty entries
[ -d "$entry" ] || continue # Skip non-existent directories [ -d "$entry" ] || continue # Skip non-existent directories
temp_entries="$temp_entries:$entry" temp_entries="$temp_entries:$entry"
@ -94,15 +96,16 @@ modify_env_path() {
entries="${temp_entries#:}:$entries" entries="${temp_entries#:}:$entries"
;; ;;
append) append)
echo "$change" | $_tr ':' '\n' | while read -r entry; do for entry in $(echo "$change" | $_tr ':' ' '); do
[ -z "$entry" ] && continue # Skip empty entries [ -z "$entry" ] && continue # Skip empty entries
[ -d "$entry" ] || continue # Skip non-existent directories [ -d "$entry" ] || continue # Skip non-existent directories
entries="$entries:$entry" entries="$entries:$entry"
done done
;; ;;
delete) delete)
echo "$change" | $_tr ':' '\n' | while read -r entry; do for entry in $(echo "$change" | $_tr ':' ' '); do
[ -z "$entry" ] && continue # Skip empty entries [ -z "$entry" ] && continue # Skip empty entries
[ -z "$entries" ] && break # nothing left to remove
entries=$(rm_env_path_entry "$entries" "$entry") entries=$(rm_env_path_entry "$entries" "$entry")
done done
;; ;;
@ -112,7 +115,8 @@ modify_env_path() {
;; ;;
esac esac
trim "$entries" ":" [ -n "$entries" ] && trim "$entries" ":"
echo
} }
prepend_paths="$HOME/.local/bin:$HOME/.cargo/bin:$FLUTTER_HOME/bin:$GOPATH/bin:$KREW_ROOT/bin" prepend_paths="$HOME/.local/bin:$HOME/.cargo/bin:$FLUTTER_HOME/bin:$GOPATH/bin:$KREW_ROOT/bin"