~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to contrib/bash/bzr

  • Committer: Martin Pool
  • Date: 2005-05-11 06:20:05 UTC
  • Revision ID: mbp@sourcefrog.net-20050511062005-297af3451635dae0
- Don't lose first line of command help!

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Programmable completion for the Bazaar-NG bzr command under bash. Source
2
 
# this file (or on some systems add it to ~/.bash_completion and start a new
3
 
# shell) and bash's completion mechanism will know all about bzr's options!
4
 
 
5
 
# Known to work with bash 2.05a with programmable completion and extended
6
 
# pattern matching enabled (use 'shopt -s extglob progcomp' to enable
7
 
# these if they are not already enabled).
8
 
 
9
 
# Based originally on the svn bash completition script.
10
 
# Customized by Sven Wilhelm/Icecrash.com
11
 
 
12
 
_bzr ()
13
 
{
14
 
        local cur cmds cmdOpts opt helpCmds optBase i
15
 
 
16
 
        COMPREPLY=()
17
 
        cur=${COMP_WORDS[COMP_CWORD]}
18
 
 
19
 
        cmds='status diff commit ci checkin move remove log info check ignored'
20
 
 
21
 
        if [[ $COMP_CWORD -eq 1 ]] ; then
22
 
                COMPREPLY=( $( compgen -W "$cmds" -- $cur ) )
23
 
                return 0
24
 
        fi
25
 
 
26
 
        # if not typing an option, or if the previous option required a
27
 
        # parameter, then fallback on ordinary filename expansion
28
 
        helpCmds='help|--help|h|\?'
29
 
        if [[ ${COMP_WORDS[1]} != @($helpCmds) ]] && \
30
 
           [[ "$cur" != -* ]] ; then
31
 
                return 0
32
 
        fi
33
 
 
34
 
        cmdOpts=
35
 
        case ${COMP_WORDS[1]} in
36
 
        status)
37
 
                cmdOpts="--all --show-ids"
38
 
                ;;
39
 
        diff)
40
 
                cmdOpts="-r --revision --diff-options"
41
 
                ;;
42
 
        commit|ci|checkin)
43
 
                cmdOpts="-r --message -F --file -v --verbose"
44
 
                ;;
45
 
        move)
46
 
                cmdOpts=""
47
 
                ;;
48
 
        remove)
49
 
                cmdOpts="-v --verbose"
50
 
                ;;
51
 
        log)
52
 
                cmdOpts="--forward --timezone -v --verbose --show-ids -r --revision"
53
 
                ;;
54
 
        info)
55
 
                cmdOpts=""
56
 
                ;;
57
 
        ignored)
58
 
                cmdOpts=""
59
 
                ;;
60
 
        check)
61
 
                cmdOpts=""
62
 
                ;;
63
 
        help|h|\?)
64
 
                cmdOpts="$cmds $qOpts"
65
 
                ;;
66
 
        *)
67
 
                ;;
68
 
        esac
69
 
 
70
 
        cmdOpts="$cmdOpts --help -h"
71
 
 
72
 
        # take out options already given
73
 
        for (( i=2; i<=$COMP_CWORD-1; ++i )) ; do
74
 
                opt=${COMP_WORDS[$i]}
75
 
 
76
 
                case $opt in
77
 
                --*)    optBase=${opt/=*/} ;;
78
 
                -*)     optBase=${opt:0:2} ;;
79
 
                esac
80
 
 
81
 
                cmdOpts=" $cmdOpts "
82
 
                cmdOpts=${cmdOpts/ ${optBase} / }
83
 
 
84
 
                # take out alternatives
85
 
                case $optBase in
86
 
                -v)              cmdOpts=${cmdOpts/ --verbose / } ;;
87
 
                --verbose)       cmdOpts=${cmdOpts/ -v / } ;;
88
 
                -h)              cmdOpts=${cmdOpts/ --help / } ;;
89
 
                --help)          cmdOpts=${cmdOpts/ -h / } ;;
90
 
                -r)              cmdOpts=${cmdOpts/ --revision / } ;;
91
 
                --revision)      cmdOpts=${cmdOpts/ -r / } ;;
92
 
                esac
93
 
 
94
 
                # skip next option if this one requires a parameter
95
 
                if [[ $opt == @($optsParam) ]] ; then
96
 
                        ((++i))
97
 
                fi
98
 
        done
99
 
 
100
 
        COMPREPLY=( $( compgen -W "$cmdOpts" -- $cur ) )
101
 
 
102
 
        return 0
103
 
}
104
 
complete -F _bzr -o default bzr