=== removed file 'functions/call' --- functions/call 2017-12-14 14:57:02 +0000 +++ functions/call 1970-01-01 00:00:00 +0000 @@ -1,52 +0,0 @@ -# usage: call [] [-- ] -# where: -# is a dependency name as defined by dofile `default..do` -# are named arguments to pass to dependency in following forms: -# foo=bar -- sets argument foo to value "bar" -# foo: -- unifies argument foo with variable foo in the caller -# foo:bar -- unifies argument foo with variable bar in the caller -# are arbitrary positional arguments - -local name -local -A prev_vars - -prev_vars=( "${(kv)vars[@]}" ) -vars=( ) - -name=$1 -shift - -# parse variable assignments -while (( $# )); do - case $1 in - (*=*) - fresh ${1%%=*} - setvar ${1%%=*} ${1#*=} - ;; - (*:) - if (($+prev_vars[${1%:}])); then - vars[${1%:}]=$prev_vars[${1%:}] - else - fresh ${1%:} - prev_vars[${1%:}]=$vars[${1%:}] - fi - ;; - (*:*) - if (($+prev_vars[${1#*:}])); then - vars[${1%:}]=$prev_vars[${1#*:}] - else - fresh ${1%:} - prev_vars[${1%:}]=$vars[${1#*:}] - fi - ;; - (--) shift; break;; - (*) die "$name: unrecognised argument: ${(qqq)1}";; - esac - shift -done - -call.$name "$@" || die "$0: ${(qqq)name} returned error" - -vars=( "${(kv)prev_vars[@]}" ) - -# vim: fileencoding=utf8 ft=zsh noet sw=4 ts=4 sts=4