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