#zmodload zsh/zprof PLUGIN_DIR="${PLUGIN_DIR:-$HOME/.zsh.d}" LOAD_DEBUG=1 local script_depends loaded_depends typeset -A script_depends typeset -A loaded_depends get_depends() { awk -F: '$0=="###" || $1 != "#" { exit } $1="depends-on" {print $3}' "$1" } build_depends() { local -a depends depends=${(@f)$(get_depends "$1")} for depend in $depends; do script_depends[$1]+="$depend:" done } load_depends() { for depend in ${(s<:>)script_depends[$1]}; do if [[ -z $loaded_depends[$depend] ]]; then local fn="$PLUGIN_DIR/dependencies/$depend.zsh" if [[ -f $fn ]]; then if [[ -z $script_depends[$fn] ]]; then build_depends "$fn" fi load_depends "$fn" source $fn else echo "$fn missing for $1" fi loaded_depends[$depend]=1 else fi done } init_scripts=( $PLUGIN_DIR/*.{,z}sh(N) ) if [[ ${ZSH_VERSION%.*} != "5.3" ]]; then echo "wrong zsh version... loading fallback configuration" PROMPT=$'%~\n%!%# ' else PATH="<<<:$PATH:>>>" for x in $init_scripts; do build_depends "$x" load_depends "$x" source "$x" done fi # Local Variables: # mode: sh # sh-shell: zsh # End: