dotfiles/zsh/path.zsh

83 lines
2.4 KiB
Bash
Raw Normal View History

2018-06-15 13:43:04 +00:00
#!/usr/bin/env zsh
2018-02-23 09:38:24 +00:00
# tie these env variables to zsh arrays
typeset -T LDFLAGS ldflags ' '
typeset -T CPPFLAGS cppflags ' '
typeset -T PKG_CONFIG_PATH pkg_config_path ':'
# keep only unique values in these arrays
typeset -U path fpath manpath ldflags cppflags pkg_config_path
export -U PATH FPATH MANPATH LDFLAGS CPPFLAGS PKG_CONFIG_PATH
2019-10-06 10:24:46 +00:00
path_append() {
local arr_name="$1" value="$2"
if eval "if (( \${${arr_name}[(ie)\$value]} > \${#${arr_name}} ))"; then
eval "${arr_name}+=(\"\$value\")"
eval "${arr_name}=(\"\${${arr_name}[@]}\" \"\$value\")"
fi
}
path_prepend() {
local arr_name="$1" value="$2"
if eval "if (( \${${arr_name}[(ie)\$value]} > \${#${arr_name}} ))"; then
eval "${arr_name}=(\"\$value\" \"\${${arr_name}[@]}\")"
fi
}
2018-02-23 09:38:24 +00:00
if is_macos; then
2018-11-13 06:05:03 +00:00
path=(
2019-01-29 10:45:24 +00:00
~/Library/Python/*/bin
/usr/local/opt/ruby/bin
2018-11-13 06:05:03 +00:00
/usr/local/opt/file-formula/bin # file
/usr/local/opt/gnu-tar/libexec/gnubin # GNU tar
/usr/local/opt/unzip/bin # GNU unzip
/usr/local/opt/openssl/bin # openssl
/usr/local/opt/gnu-getopt/bin # getopt
/usr/local/opt/findutils/libexec/gnubin # GNU findutils
/usr/local/opt/coreutils/libexec/gnubin # GNU coreutils
/usr/local/opt/curl/bin # curl
2018-11-13 06:05:03 +00:00
"${path[@]}"
)
manpath=(
/usr/local/opt/findutils/libexec/gnuman # GNU findutils
"${manpath[@]}"
)
for formula in ruby openssl curl; do
formula_path="/usr/local/opt/$formula"
if [[ -d "$formula_path" ]]; then
ldflags+=( -L"$formula_path"/lib )
cppflags+=( -L"$formula_path"/include )
pkg_config_path+=( "$formula_path"/lib/pkgconfig )
fi
done
2018-02-23 09:38:24 +00:00
fi
2019-10-06 10:24:46 +00:00
# Yarn global packages
path=(~/.yarn/bin "${path[@]}")
# Go
2019-09-24 19:34:15 +00:00
export GOPATH=~/.go
2018-11-28 19:00:09 +00:00
path=("$GOPATH/bin" "${path[@]}")
2019-09-24 19:34:15 +00:00
# Rust
path=(~/.cargo/bin "${path[@]}")
# check if the Rust toolchain was installed via rustup
if rustup_home="$(rustup show home 2> /dev/null)" &&
rust_sysroot="$(rustc --print sysroot 2> /dev/null)" &&
[[ -d "$rustup_home" && -d "$rust_sysroot" && "$rust_sysroot" == "$rustup_home"/* ]]
then
# add paths of the selected Rust toolchain
fpath=("$rust_sysroot/share/zsh/site-functions" "${fpath[@]}")
manpath=("$rust_sysroot/share/man" "${manpath[@]}")
fi
unset rustup_home rust_sysroot
2018-10-11 20:38:05 +00:00
# add my binaries and completions
2019-09-24 19:34:15 +00:00
path=("${ZSH_DOTFILES:h}/scripts" "${path[@]}")
fpath=("$ZSH_DOTFILES/completions" "${fpath[@]}")
2018-11-13 06:05:03 +00:00
2019-09-24 19:34:15 +00:00
# add user binaries
path=(~/.local/bin "${path[@]}")