# -*- mode: sh; sh-shell: zsh;-*- # set -x # zmodload zsh/zprof if [[ "$TERM" == "dumb" ]]; then unsetopt zle unsetopt prompt_cr unsetopt prompt_subst unfunction precmd unfunction preexec PS1='$ ' else 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")}) if [[ -z $depends ]]; then script_depends[$1]=- fi 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] && "$depend" != "-" ]]; then loaded_depends[$depend]=1 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 else fi done } init_scripts=( $PLUGIN_DIR/*.{,z}sh(N) ) if [[ -f ~/zshrc.depends ]]; then source ~/zshrc.depends fi unset __ETC_PROFILE_NIX_SOURCED for x in $init_scripts; do if ! [[ -f ~/zshrc.depends ]]; then build_depends "$x" fi load_depends "$x" source "$x" done if ! [[ -f ~/zshrc.depends ]]; then echo "script_depends=(${(kv)script_depends})" >| ~/zshrc.depends fi fi