feat(zsh): add dynamic path support
This commit is contained in:
parent
c80eec632c
commit
b7a3aabf49
1 changed files with 51 additions and 0 deletions
51
site-modules/core/files/oh-my-zsh/custom/paths.zsh
Normal file
51
site-modules/core/files/oh-my-zsh/custom/paths.zsh
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
#!/bin/zsh
|
||||
#
|
||||
# Update global path variable when moving around the file system to include
|
||||
# local project bin directories. When opening the shell in a project with a
|
||||
# compatible bin directory i.e. `vendor/bin` for PHP composer packages, the
|
||||
# directory will be added to the `PATH` variable so that the locally installed
|
||||
# packages can be executed
|
||||
#
|
||||
# Compatible directories
|
||||
# - vendor/bin
|
||||
# - node_modules/.bin
|
||||
#
|
||||
# Author: Ade Attwood <code@adeattwood.co.uk>
|
||||
# Updated: 2020-12-28
|
||||
#
|
||||
|
||||
#
|
||||
# Update paths function to be called when `cd` is called
|
||||
#
|
||||
update_path() {
|
||||
if [[ -d ./vendor/bin ]]; then
|
||||
export PATH=$PATH:./vendor/bin
|
||||
else
|
||||
path=( ${path[@]:#*./vendor/bin*} )
|
||||
fi
|
||||
|
||||
if [[ -d ./node_modules/.bin ]]; then
|
||||
export PATH=$PATH:./node_modules/.bin
|
||||
else
|
||||
path=( ${path[@]:#*./node_modules/.bin*} )
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Call the update path function whenever the current working directory is
|
||||
# changed
|
||||
#
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook chpwd update_path
|
||||
|
||||
#
|
||||
# Call update path when zsh is loaded. If the shell is initialised in a
|
||||
# directory when local bin directory the directory will not be added to the path
|
||||
# because the `chpwd` hook has not been called
|
||||
#
|
||||
update_path
|
||||
|
||||
#
|
||||
# Remove duplicate entries from the path variable
|
||||
#
|
||||
typeset -U path
|
||||
Loading…
Reference in a new issue