[zsh] added functions to manage path

This commit is contained in:
Afonso Franco 2025-03-16 01:14:42 +00:00
parent 9f1a61fd17
commit 97f9e9a0a5
Signed by: afonso
SSH key fingerprint: SHA256:PQTRDHPH3yALEGtHXnXBp3Orfcn21pK20t0tS1kHg54

View file

@ -1,3 +1,35 @@
function remove_from_path() {
local a
local p
local s
local r
eval "p=\$$1"
a=( ${(s/:/)p} )
if [[ ${a[(i)${2}]} -gt ${#a} ]] && return
for s in $a; do
if [[ ! $s == $2 ]]; then
[[ -z "$r" ]] && r=$s || r="$r:$s"
fi
done
eval $1="$r"
}
function prepend_path() {
[[ ! -d "$2" ]] && return
local p
remove_from_path "$1" "$2"
eval "p=\$$1"
eval export $1="$2:$p"
}
function append_path() {
[[ ! -d "$2" ]] && return
local p
remove_from_path "$1" "$2"
eval "p=\$$1"
eval export $1="$p:$2"
}
export EDITOR=nvim export EDITOR=nvim
export VISUAL=nvim export VISUAL=nvim
export READER=mupdf export READER=mupdf
@ -15,19 +47,22 @@ export GOBIN="$GOPATH/bin"
if [[ $(uname) == "Darwin" ]]; then if [[ $(uname) == "Darwin" ]]; then
export JAVA_HOME=$(/usr/libexec/java_home) export JAVA_HOME=$(/usr/libexec/java_home)
export GEM_HOME=$HOME/.gem export GEM_HOME=$HOME/.gem
export PATH="/opt/homebrew/bin:$PATH" prepend_path PATH "/opt/homebrew/bin"
export PATH="/opt/homebrew/opt/texlive/bin:$PATH" prepend_path PATH "/opt/homebrew/opt/texlive/bin"
export PATH=$PATH:$GEM_HOME/bin append_path PATH $GEM_HOME/bin
fi fi
#BOTH #BOTH
export PATH="/usr/sbin:/sbin:$PATH" append_path PATH "/usr/sbin:/sbin"
export PATH="$HOME/.local/share/nvim/mason/bin:$PATH" append_path PATH "$HOME/.local/share/nvim/mason/bin"
export PATH="$HOME/.local/bin:$PATH" append_path PATH "$HOME/.local/bin"
export PATH="$HOME/go/bin:$PATH" append_path PATH "$HOME/go/bin"
export PATH="$HOME/.cargo/bin:$PATH" append_path PATH "$HOME/.ghcup/bin"
export PATH="$HOME/.ghcup/bin:$PATH" append_path PATH "$HOME/.cabal/bin"
export PATH="$HOME/.cabal/bin:$PATH" append_path PATH "$HOME/.cargo/bin"
for bindir in ~/opt/*/bin(N); do
if [[ -d "$bindir" ]]; then
prepend_path PATH "$bindir"
fi
done
. "$HOME/.cargo/env"