#!/bin/zsh -l
# vim: ft=zsh noet ts=4 sts=4 sw=4
if [[ $0:t == run && $0:a:h:t == log ]]; then
	zsv_mode=log
	zsv_dir=$0:a:h:h
elif [[ $0:a:h:t == control ]]; then
	zsv_mode=$0:t
	zsv_dir=$0:a:h:h
else
	zsv_mode=$0:t
	zsv_dir=$0:a:h
fi

autoload -Uz zsv_config; zsv_config
zsv_parse $zsv_dir:t
zsv_eval

(( ${flags[X]} )) && set -x

if [[ -n ${zsv_hooks[$zsv_mode]} ]]; then
	for hook in ${=zsv_hooks}; do
		(($+functions[$hook])) || autoload -Uz $hook
		$hook
	done
fi

#print -rl handlers: ${(kv)handler}

if (( ${+handler[$zsv_mode]} )); then
	runf=$handler[$zsv_mode]
else
	runf=$zsv_default_handler[$zsv_mode]
fi

[[ -z $runf ]] && exit 0
(($+functions[$runf])) || autoload -Uz $runf
$runf
exit $?