function zconfig_checkload() { typeset -a -g zconfig_loaded if [[ ! ${zconfig_loaded[(r)${1}]} ]] then zshlibs_log zconfig "sourcing config '$1'" . -- $1 2>&1 >(zshlibs_log zconfig) zconfig_loaded+=("$1") zshlibs_log zconfig "end sourcing config '$1'" else zshlibs_log zconfig "config '$1' already loaded" zshlibs_log zconfig "currently loaded configs: ${zconfig_loaded}" fi } function zconfigs_load() { zshlibs_log zconfig "loading supplied config names" for configfile in ${*}; do zconfig_checkload $configfile done } function zconfigs_local_load() { if [[ ! -a ${zconfig_local_path} ]]; then zshlibs_log zconfig "local config missing, recreating from '${zconfig_shared_path}/zshconfig.example'" mkdir -p -m 700 ${zconfig_local_path} cp ${zconfig_shared_path}/zshconfig.example ${zconfig_local_path}/local.config.zsh fi if [[ ! -d ${zconfig_local_path} ]]; then zshlibs_log zconfig "local config appears to be a file, loading '${zconfig_local_path}'" zconfig_checkload ${zconfig_local_path} else zshlibs_log zconfig "local config is a directory, loading '${zconfig_local_path}/*.config.zsh'" zconfigs_load ${zconfig_local_path}/*.config.zsh; fi } # zconfig bootup function zconfig_boot() { zconfig_configure zconfig_setup zconfig_setup_interactive } function zconfig_configure() { typeset -a -g zconfig_loaded typeset -a -g config_extra # user populatable config names in zshlibs location typeset -g zconfig_shared_path="${zshlibs_install}/config" typeset -g zconfig_local_path="${HOME}/.config/zsh" } function zbootstrap_noninteractive() { zshlibs_log zconfig "WARNING: legacy function called" zconfig_configure zconfig_setup } function zconfig_setup() { zshlibs_log zconfig 'load global config' zconfig_checkload ${zconfig_shared_path}/global.config.zsh zshlibs_log zconfig 'load local configs' zconfigs_local_load for zconfig in $config_extra; do zshlibs_log zconfig 'load config extra $zconfig' zconfig_checkload ${zconfig_shared_path}/${zconfig}.config.zsh done } function zconfig_setup_interactive() { zshlibs_log zconfig "loading interactive config" zconfig_checkload ${zconfig_shared_path}/global.style.zsh zshlibs_log zconfig "done loading interactive config" }