don't ignore your own plugin
This commit is contained in:
parent
4a72ea26b4
commit
95f20a9ae3
2 changed files with 103 additions and 1 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -158,5 +158,4 @@ cython_debug/
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/python
|
# End of https://www.toptal.com/developers/gitignore/api/python
|
||||||
|
|
||||||
.task.mk
|
.task.mk
|
||||||
plugins/
|
|
||||||
|
|
||||||
|
|
103
home/private_dot_config/zsh/plugins/zexists/zexists.plugin.zsh
Normal file
103
home/private_dot_config/zsh/plugins/zexists/zexists.plugin.zsh
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
function source-zshcmdd {
|
||||||
|
setopt extended_glob
|
||||||
|
|
||||||
|
# glob search for the zshcmd.d dir
|
||||||
|
local -a zshcmdd=()
|
||||||
|
[[ -n "$ZSHCMDD" ]] && zshcmdd+=($ZSHCMDD(N))
|
||||||
|
[[ -n "$ZDOTDIR" ]] && zshcmdd+=(
|
||||||
|
$ZDOTDIR/exists.d/cmd(N)
|
||||||
|
)
|
||||||
|
zshcmdd+=(${ZDOTDIR:-$HOME}/zexists.d/cmd(N))
|
||||||
|
|
||||||
|
if ! (( $#zshcmdd )); then
|
||||||
|
echo >&2 "zexists: dir not found '${ZSHCMDD:-${ZDOTDIR:-$HOME}/zexists.d/cmd}'"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local -a conf_files=("$zshcmdd[1]"/*.{sh,zsh}(N))
|
||||||
|
local rcfile
|
||||||
|
local antircfile
|
||||||
|
# sort and source conf files
|
||||||
|
for rcfile in ${(o)conf_files}; do
|
||||||
|
# ignore files that begin with a tilde and antircfiles
|
||||||
|
case ${rcfile:t} in 'anti'*|'~'*) continue;; esac
|
||||||
|
|
||||||
|
# source files only if exe with that name exists
|
||||||
|
if (( ! $+commands[{rcfile:t:r}] )); then
|
||||||
|
source "$rcfile"
|
||||||
|
else
|
||||||
|
# if it doesn't exist try the anti version
|
||||||
|
antircfile=${rcfile:h}/anti-${rcfile:t}
|
||||||
|
[ -f $antircfile ] && source $antircfile
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
source-zshcmdd
|
||||||
|
|
||||||
|
function zshdir-decode {
|
||||||
|
# echo ${${1//--DOLLAR--/$}//--SLASH--/\/} | envsubst
|
||||||
|
# for now just remove the 'dir' part
|
||||||
|
# :3 for 'dir'
|
||||||
|
echo ${${1//-DOLLAR-/$}//-SLASH-/\/} | envsubst
|
||||||
|
}
|
||||||
|
|
||||||
|
function zshdir-encode {
|
||||||
|
# dir is hardcoded...
|
||||||
|
echo dir${${1//${HOME}/\-DOLLAR-HOME}//\//-SLASH-}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function source-zshpathd {
|
||||||
|
setopt extended_glob
|
||||||
|
|
||||||
|
# glob search for the zshcmd.d dir
|
||||||
|
local -a zshpathd=()
|
||||||
|
[[ -n "$ZSHPATHD" ]] && zshpathd+=($ZSHPATH(N))
|
||||||
|
[[ -n "$ZDOTDIR" ]] && zshpathd+=(
|
||||||
|
$ZDOTDIR/zexists/path(N)
|
||||||
|
)
|
||||||
|
zshpathd+=(${ZDOTDIR:-$HOME}/zexists.d/path(N))
|
||||||
|
|
||||||
|
if ! (( $#zshpathd )); then
|
||||||
|
echo >&2 "zexists: dir not found '${ZSHPATHD:-${ZDOTDIR:-$HOME}/zexists.d/path}'"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local -a conf_files=("$zshpathd[1]"/*(N))
|
||||||
|
local rcfile
|
||||||
|
local name
|
||||||
|
local pathtype
|
||||||
|
local directory
|
||||||
|
local antircfile # sort and source conf files
|
||||||
|
|
||||||
|
for rcfile in ${(o)conf_files}; do
|
||||||
|
|
||||||
|
if [[ ${rcfile:t} == "dir"* ]];then
|
||||||
|
pathtype='dir'
|
||||||
|
elif [[ ${rcfile:t} == "file"* ]];then
|
||||||
|
pathtype='file'
|
||||||
|
echo >&2 "zexists: file type not yet supported"
|
||||||
|
else
|
||||||
|
echo >&2 "zexists: unknown path type for ${rcfile}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# ignore files that begin with a tilde
|
||||||
|
case ${rcfile:t} in '~'*) continue;; esac
|
||||||
|
# remove 'dir' from name
|
||||||
|
name=${${rcfile:t}/$pathtype/}
|
||||||
|
directory=$(zshdir-decode ${name})
|
||||||
|
# source files only if exe with that name exists
|
||||||
|
if [[ -d $directory ]]; then
|
||||||
|
source $rcfile
|
||||||
|
else
|
||||||
|
# if it doesn't exist try the anti version
|
||||||
|
antircfile=${rcfile:h}/anti-${pathtype}-${rcfile:t}
|
||||||
|
[[ -f $antircfile ]] && source $antircfile
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
source-zshpathd
|
||||||
|
|
Loading…
Reference in a new issue