# 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