#compdef bts local expl first=1 _arguments -A "-*" \ '(-o --offline)'{-o,--offline}'[use cached bugs]' \ '(--online --no-offline)'{--online,--no-offline}'[do not use cached bugs]' \ '(--cache --no-cache)--cache[cache new versions of pages]' \ '(--cache --no-cache)--no-cache[do not cache new versions of pages]' \ '--cache-mode=:cache mode:(min mbox full)' \ '--cache-delay=:seconds:' \ '--mbox[open a mail reader to read the corresponding mbox]' \ '--mailreader=:reader:' \ '(-f --force-refresh)'{-f,--force-refresh}'[download bug report even if unchanged]' \ '-no-force-refresh[do not force refresh]' \ '(-q --quiet)*'{-q,--quiet}'[only display info about newly cached pages]' \ '(--no-conf --noconf)*'{--no-conf,--noconf}'[do not read any config files]' \ '*:subcommand and args:->subcmds' && return 0 compset -N '-[^0-9]#' && first=0 compset -N '[,.]' && first=0 [[ $first -eq 0 ]] || compset -n 2 if [[ CURRENT -eq 1 ]]; then _wanted cmd expl 'bts command' compadd show bugs close reopen retitle \ reassign merge unmerge tag tags severity forwarded notforwarded help \ clone submitter found notfound block unblock user usertag usertags \ package owner noowner reportspam cache cleancache claim unclaim \ subscribe unsubscribe fixed notfixed affects return fi case "$words[1]" in (close|unmerge|notforwarded|noowner|reportspam) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; (show|bugs) if [[ CURRENT -eq 2 ]]; then _alternative \ 'packages:package:_deb_packages avail' \ "emails:package maintainer:compadd $DEBEMAIL" else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; reopen) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _wanted submitter expl 'new submitter' compadd $DEBEMAIL else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; retitle) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _message -e submitter 'new title' else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; reassign) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _wanted submitter expl 'new package' _deb_packages avail else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; merge) _message -e bugnum 'bug number' if [[ CURRENT -gt 2 ]]; then _wanted sep expl 'separator' compadd -S ' ' , . fi ;; tags#) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _wanted operator expl 'operator' compadd - '+' '-' '=' elif [[ CURRENT -eq 4 ]]; then _wanted tag expl 'tag' \ compadd patch wontfix moreinfo unreproducible help pending \ fixed security upstream confirmed fixed-upstream \ fixed-in-experimental d-i ipv6 lfs l10n potato woody sarge \ sarge-ignore etch etch-ignore lenny lenny-ignore squeeze \ squeeze-ignore wheezy wheezy-ignore sid experimental else _wanted tag expl 'tag' \ compadd patch wontfix moreinfo unreproducible help pending \ fixed security upstream confirmed fixed-upstream \ fixed-in-experimental d-i ipv6 lfs l10n potato woody sarge \ sarge-ignore etch etch-ignore lenny lenny-ignore squeeze \ squeeze-ignore wheezy wheezy-ignore sid experimental _wanted sep expl 'separator' compadd -S ' ' , . fi ;; severity) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _wanted severity expl 'severity' \ compadd wishlist minor normal serious important critical grave else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; forwarded) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _wanted upstream expl 'upstream email' _email_addresses -c else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; (clone) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 || -prefix [-] ]]; then _wanted newid expl 'new ID' compadd -- -{1..9} else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; (submitter) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' else _alternative \ 'bugnum:bug number:' \ 'email:email address:_email_addresses -c' \ 'bang:bang:compadd \!' fi ;; (owner|subscribe|unsubscribe) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _alternative \ 'email:email address:_email_addresses -c' \ 'bang:bang:compadd \!' else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; (found|notfound|fixed|notfixed) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _message -e version 'version' else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; (block|unblock) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _wanted prep expl 'preposition' compadd by with else _alternative \ 'bugnum:bug number:' \ 'separator:separator:compadd -S " " , .' fi ;; (user) if [[ CURRENT -eq 2 ]]; then _wanted upstream expl 'user email for usertags' _email_addresses -c else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; (usertags#) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _wanted operator expl 'operator' compadd - '+' '-' '=' elif [[ CURRENT -eq 4 ]]; then _message -e usertag 'user tag' else _message -e usertag 'user tag' _wanted sep expl 'separator' compadd -S ' ' , . fi ;; (package) if [[ CURRENT -eq 2 ]]; then _wanted package expl 'package' _deb_packages avail else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; (cache) _alternative \ 'package:package:_deb_packages avail' \ 'email:email address:_email_addresses -c' \ 'rc:rc:compadd release-critical' ;; (cleancache) _alternative \ 'package:package:_deb_packages avail' \ 'email:email address:_email_addresses -c' \ 'all:all:compadd ALL' ;; (claim|unclaim) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _alternative \ 'email:email address:_email_addresses -c' \ 'separator:separator:compadd -S " " , .' else _wanted sep expl 'separator' compadd -S ' ' , . fi ;; (affects) if [[ CURRENT -eq 2 ]]; then _message -e bugnum 'bug number' elif [[ CURRENT -eq 3 ]]; then _wanted operator expl 'operator' compadd - '+' '-' '=' else _wanted package expl 'package' _deb_packages avail fi ;; help) ;& *) _wanted sep expl 'separator' compadd -S ' ' , . ;; esac