# -*- mode: sh; sh-shell: zsh;-*-
#zmodload zsh/zprof
PLUGIN_DIR="${PLUGIN_DIR:-$HOME/.zsh.d}"
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) )
PATH="<<<:$PATH:>>>"
for x in $init_scripts; do
build_depends "$x"
load_depends "$x"
source "$x"
done
|