#!/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 $?