about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Debian/Command/_bts90
1 files changed, 86 insertions, 4 deletions
diff --git a/Completion/Debian/Command/_bts b/Completion/Debian/Command/_bts
index cd78eb669..38c5582a8 100644
--- a/Completion/Debian/Command/_bts
+++ b/Completion/Debian/Command/_bts
@@ -1,19 +1,36 @@
 #compdef bts
 
-local expl
+local expl first=1
 
-compset -N '[,.]' || compset -n 2
+_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 severity forwarded notforwarded help \
-      clone submitter found notfound block unblock user usertag \
+      clone submitter found notfound block unblock user usertag usertags \
       package owner noowner reportspam cache cleancache
   return
 fi
 
 case "$words[1]" in
-  show|close|unmerge|notforwarded)
+  (show|close|unmerge|notforwarded|noowner|reportspam)
     if [[ CURRENT -eq 2 ]]; then
       _message -e bugnum 'bug number'
     else
@@ -99,6 +116,71 @@ case "$words[1]" in
      _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|owner)
+    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
+  ;;
+  (found|notfound)
+    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
+  ;;
   help)
   ;&
   *) _wanted sep expl 'separator' compadd -S ' ' , .