/bash_completion.d/bzr
http://github.com/brinkman83/bashrc · #! · 104 lines · 88 code · 16 blank · 0 comment · 0 complexity · 142eb79e59b2317fc7acc423bcc84291 MD5 · raw file
- # Programmable completion for the Bazaar-NG bzr command under bash. Source
- # this file (or on some systems add it to ~/.bash_completion and start a new
- # shell) and bash's completion mechanism will know all about bzr's options!
- # Known to work with bash 2.05a with programmable completion and extended
- # pattern matching enabled (use 'shopt -s extglob progcomp' to enable
- # these if they are not already enabled).
- # Based originally on the svn bash completition script.
- # Customized by Sven Wilhelm/Icecrash.com
- _bzr ()
- {
- local cur cmds cmdOpts opt helpCmds optBase i
- COMPREPLY=()
- cur=${COMP_WORDS[COMP_CWORD]}
- cmds='status diff commit ci checkin move remove log info check ignored'
- if [[ $COMP_CWORD -eq 1 ]] ; then
- COMPREPLY=( $( compgen -W "$cmds" -- $cur ) )
- return 0
- fi
- # if not typing an option, or if the previous option required a
- # parameter, then fallback on ordinary filename expansion
- helpCmds='help|--help|h|\?'
- if [[ ${COMP_WORDS[1]} != @($helpCmds) ]] && \
- [[ "$cur" != -* ]] ; then
- return 0
- fi
- cmdOpts=
- case ${COMP_WORDS[1]} in
- status)
- cmdOpts="--all --show-ids"
- ;;
- diff)
- cmdOpts="-r --revision --diff-options"
- ;;
- commit|ci|checkin)
- cmdOpts="-r --message -F --file -v --verbose"
- ;;
- move)
- cmdOpts=""
- ;;
- remove)
- cmdOpts="-v --verbose"
- ;;
- log)
- cmdOpts="--forward --timezone -v --verbose --show-ids -r --revision"
- ;;
- info)
- cmdOpts=""
- ;;
- ignored)
- cmdOpts=""
- ;;
- check)
- cmdOpts=""
- ;;
- help|h|\?)
- cmdOpts="$cmds $qOpts"
- ;;
- *)
- ;;
- esac
- cmdOpts="$cmdOpts --help -h"
- # take out options already given
- for (( i=2; i<=$COMP_CWORD-1; ++i )) ; do
- opt=${COMP_WORDS[$i]}
- case $opt in
- --*) optBase=${opt/=*/} ;;
- -*) optBase=${opt:0:2} ;;
- esac
- cmdOpts=" $cmdOpts "
- cmdOpts=${cmdOpts/ ${optBase} / }
- # take out alternatives
- case $optBase in
- -v) cmdOpts=${cmdOpts/ --verbose / } ;;
- --verbose) cmdOpts=${cmdOpts/ -v / } ;;
- -h) cmdOpts=${cmdOpts/ --help / } ;;
- --help) cmdOpts=${cmdOpts/ -h / } ;;
- -r) cmdOpts=${cmdOpts/ --revision / } ;;
- --revision) cmdOpts=${cmdOpts/ -r / } ;;
- esac
- # skip next option if this one requires a parameter
- if [[ $opt == @($optsParam) ]] ; then
- ((++i))
- fi
- done
- COMPREPLY=( $( compgen -W "$cmdOpts" -- $cur ) )
- return 0
- }
- complete -F _bzr -o default bzr