=== modified file 'common.zsh' --- common.zsh 2017-11-15 00:12:49 +0000 +++ common.zsh 2017-11-14 23:44:48 +0000 @@ -25,35 +25,35 @@ } decode_args() { - typeset -gA vars + typeset -gA args local arg for arg in "${(s::Q)BASE}"; do if [[ "$arg" != *=* ]]; then echo >&2 "Malformed argument: ${(qqq)arg}" exit 1 fi - if (( $+vars[${arg%%=*}] )); then + if (( $+args[${arg%%=*}] )); then echo >&2 "Duplicate argument: ${arg%%=*}" exit 1 fi - vars[${arg%%=*}]=${arg#*=} + args[${arg%%=*}]=${arg#*=} done } finish() { local -a arglist local k - for k in ${(ko)vars}; do - arglist+=( "$k=$vars[$k]" ) + for k in ${(ko)args}; do + arglist+=( "$k=$args[$k]" ) done printf >$OUT "%s" "${(j::)arglist}" exit 0 } -# set $vars parameter if it's empty (ie. set default value) +# set $args parameter if it's empty (ie. set default value) defvar() { - if ! (($+vars[$1])); then - vars[$1]=$2 + if ! (($+args[$1])); then + args[$1]=$2 fi } @@ -62,7 +62,7 @@ local var local -a empty for var in "$@"; do - if ! (($+vars[$var])); then + if ! (($+args[$var])); then empty+=( $var ) fi done @@ -89,7 +89,7 @@ local name outer inner local target - local -a new_vars run + local -a new_args run local -A lift name=$1 @@ -98,16 +98,16 @@ # parse variable assignments while (( $# )); do case $1 in - (:*) ((${+vars[${1#:}]})) || \ + (:*) ((${+args[${1#:}]})) || \ die "variable ${(qqq)1#:} not set, passed as :argument" - new_vars+=( ${1#:}="${vars[${1#:}]}" );; - (\?*=*) (($+vars[${${1#\?}#*=})) && \ - new_vars+=( ${${1#\?}%%=*}="$vars[${${1#\?}#*=}" );; - (\?*) ((${+vars[${1#\?}]})) && \ - new_vars+=( ${1#\?}="${vars[${1#\?}]}" );; + new_args+=( ${1#:}="${args[${1#:}]}" );; + (\?*=*) (($+args[${${1#\?}#*=})) && \ + new_args+=( ${${1#\?}%%=*}="$args[${${1#\?}#*=}" );; + (\?*) ((${+args[${1#\?}]})) && \ + new_args+=( ${1#\?}="${args[${1#\?}]}" );; (%*=*) lift[${${1#%}%%=*}]=${${1#%}#*=};; (%*) lift[${1#%}]=${1#%};; - (*=*) new_vars+=( "${1%%=*}"="${1#*=}" );; + (*=*) new_args+=( "${1%%=*}"="${1#*=}" );; (--) shift; break;; (*) die "$name: unrecognised argument: ${(qqq)1}";; esac @@ -118,25 +118,25 @@ else run=( redo-ifchange ) fi - target=${(j::)${(oq)new_vars}}.$name + target=${(j::)${(oq)a}}$.name "$run[@]" meta/$target || die "Building $name failed ($target)" if (($#lift)); then # lift %variables from calee to caller - local lift_vars arg + local lift_args arg for arg in "${(s::Q)$(