# vim: ft=zsh
# Modules

function msg {
	if ! (( flag_quiet )); then
		printf '%s\n' "$*"
	fi
}

function err { msg "$*" >&2; }

function modpath {
	case $1 in
		(=) ZSHRC_MODPATH=( "$@" );;
		(*) ZSHRC_MODPATH+=( "$@" );;
	esac

	export ZSHRC_MODPATH
}

function use {
	declare flag_nofail flag_quiet mname m_nofirst

	while (( $# )); do
		case $1 in
			(-n) flag_nofail=1;;
			(-q) flag_quiet=1;;
			(--) shift; break;;
			(*) break;;
		esac
		shift
	done

	printf '[zshrc] Loading modules: '
	for mname in $@; do
		if ! (( m_nofirst )); then
			printf '%s' $mname
		else
			printf ', %s' $mname
		fi

		for p in $ZSHRC_MODPATH; do
			if [[ -f $p/$mname ]]; then
				if ! source $p/$mname; then
					printf '(fail)'
				fi
			else
				printf '(not found)'
			fi
		done

		m_nofirst=1
	done

	printf '\n'
}

# Default ZSHRC_MODPATH
modpath "$HOME/.config/zsh.d/modules"
