1#compdef sabcmd 2 3local curcontext="$curcontext" state mode line expl ret=1 4typeset -A opt_args 5local mopts='(-c -x -s -? -v --chain-xsl --batch-xml --batch-xsl --help --version)' 6 7_arguments -C \ 8 '(-b --base)'{-b,--base=}'[specify base URI]:URI' \ 9 '(-)--debug-options[show help on debug options]' \ 10 '(- *)'{-\?,--help}'[show help information]' \ 11 '(-L --log-file)'{-L,--log-file=}'[specify log file, turn on logging]:log file:_files' \ 12 '(-m --measure)'{-m,--measure}'[measure the processing time]' \ 13 '(- *)'{-v,--version}'[display version information]' \ 14 '--debugger[run the xslt debugger]' \ 15 $mopts{-c,--chain-xsl}'[single input file, multiple chained stylesheets]' \ 16 $mopts{-x,--batch-xml}'[single input file, multiple stylesheets]' \ 17 $mopts{-s,--batch-xsl}'[multiple input files, single stylesheet]' \ 18 '*: :->arguments' && ret=0 19 20if [[ -n "$state" ]]; then 21 mode="${opt_args[(i)-c|--chain-xsl]:+chain}${opt_args[(i)-x|--batch-xml]:+batch-x}${opt_args[(i)-s|--batch-xsl]:+batch-s}" 22 [[ $mode = (chain|batch-[xs]) ]] || mode=default 23 _tags assignments files 24 while _tags; do 25 if _requested assignments; then 26 if [[ -prefix *= ]]; then 27 _message -e value value 28 else 29 _message -e parameter 'parameter name' 30 fi 31 fi 32 if _requested files; then 33 case $mode:${#words[1,CURRENT-1]:#(-*|*=*)}; in 34 default:1|chain:<3->|batch-x:2|batch-s:1) 35 _description files expl stylesheet 36 _files "$expl[@]" -g "*.xsl(-.)" && ret=0 37 ;; 38 default:2|chain:1|batch-x:1|batch-s:2) 39 _description files expl 'input file' 40 _files "$expl[@]" && ret=0 41 ;; 42 default:3|chain:2|batch-x:<3->|batch-s:<3->) 43 _description files expl 'output file' 44 _files "$expl[@]" && ret=0 45 ;; 46 esac 47 fi 48 (( ret )) || break 49 done 50fi 51 52return ret 53