#compdef bts
local expl

compset -N '[,.]' || compset -n 2

if [[ CURRENT -eq 1 ]];
then
 _wanted cmd expl 'bts command' \
 compadd show bugs close reopen retitle reassign merge unmerge tag \
         severity forwarded notforwarded help
else
 case "$words[1]" in
 	show|close|unmerge|notforwarded)
	 if [[ CURRENT -eq 2 ]];
	 then
	  _wanted bugnum expl 'bug number' compadd
	 else
	  _wanted sep expl 'separator' compadd -S ' ' , .
	 fi
	;;
	bugs)
	 if [[ CURRENT -eq 2 ]];
	 then
	  _wanted package expl 'package' _deb_packages avail
	  _wanted maintainer expl 'package maintainer' compadd $DEBEMAIL
	 fi
	  _wanted sep expl 'separator' compadd -S ' ' , .
	;;
	reopen)
	 if [[ CURRENT -eq 2 ]];
	 then
	  _wanted bugnum expl 'bug number' compadd
	 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
	  _wanted bugnum expl 'bug number' compadd
	 elif [[ CURRENT -eq 3 ]];
	 then
	  _wanted submitter expl 'new title' compadd
	 else
	  _wanted sep expl 'separator' compadd -S ' ' , .
	 fi
	;;
	reassign)
	 if [[ CURRENT -eq 2 ]];
	 then
	  _wanted bugnum expl 'bug number' compadd
	 elif [[ CURRENT -eq 3 ]];
	 then
	  _wanted submitter expl 'new package' _deb_packages avail
	 else
	  _wanted sep expl 'separator' compadd -S ' ' , .
	 fi
	;;
	merge)
	 _wanted bugnum expl 'bug number' compadd
	 if [[ CURRENT -gt 2 ]];
	 then
	  _wanted sep expl 'separator' compadd -S ' ' , .
	 fi
	;;
	tag)
	 if [[ CURRENT -eq 2 ]];
	 then
	  _wanted bugnum expl 'bug number' compadd
	 elif [[ CURRENT -eq 3 ]];
	 then
	  _wanted operator expl 'operator' compadd - '+' '-' '='
	 elif [[ CURRENT -eq 4 ]];
	 then
	  _wanted tag expl 'tag' \
	  compadd patch wontfix moreinfo unreproducible fixed \
	          security potato woody sid help pending upstream \
		  sarge experimental
	 else
	  _wanted tag expl 'tag' \
	  compadd patch wontfix moreinfo unreproducible fixed \
	          security potato woody sid help pending upstream \
		  sarge experimental
	  _wanted sep expl 'separator' compadd -S ' ' , .
	 fi
	;;
	severity)
	 if [[ CURRENT -eq 2 ]];
	 then
	  _wanted bugnum expl 'bug number' compadd
	 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
	  _wanted bugnum expl 'bug number' compadd
	 elif [[ CURRENT -eq 3 ]];
	 then
	  _wanted upstream expl 'upstream email' compadd
	 else
	  _wanted sep expl 'separator' compadd -S ' ' , .
	 fi
	;;
	help)
	;&
	*) _wanted sep expl 'separator' compadd -S ' ' , .
	;;
 esac
fi
