#!/usr/bin/env zsh
# vi: set ft=zsh tw=80 ts=2

function buildExternCommandName() {
	cmdName="azw-$1"
	shift
	while ! whence $cmdName &> /dev/null; do
		if [[ $# -gt 0 ]]; then
			cmdName="${cmdName}_${1}"
			shift
		else
			lop -- -e "Unknown command $@."
			return 10
		fi
	done
	args=("$@")
}

function dispatchToExtern() {
	local cmdName= args=()
	buildExternCommandName "$@" || return $?
	$cmdName "${args[@]}"
}

function dispatchCommand() {
	local cmdName="$1"
	case $cmdName in
		*)
			dispatchToExtern "$@"
			;;
	esac
}

if [[ "${ZSH_EVAL_CONTEXT}" == toplevel || "${ZSH_EVAL_CONTEXT}" == cmdarg ]]; then
	_DIR="${0:A:h}"
	source autoload-zshlib
	dispatchCommand "$@"
fi
