~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to contrib/zsh/_bzr

  • Committer: Vincent Ladeuil
  • Date: 2010-03-10 09:33:04 UTC
  • mto: (5082.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 5083.
  • Revision ID: v.ladeuil+lp@free.fr-20100310093304-4245t4tazd4sxoav
Cleanup test from overly cautious checks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#compdef bzr
 
2
 
 
3
# Rudimentary zsh completion support for bzr.
 
4
 
 
5
# -S means there are no options after a -- and that argument is ignored
 
6
 
 
7
# To use this you must arrange for it to be in a directory that is on
 
8
# your $fpath, and also for compinit to be run.  I don't understand
 
9
# how to get zsh to reload this file when it changes, other than by
 
10
# starting a new zsh.
 
11
 
 
12
local _bzr_subcommands expl curcontext="$curcontext" state line
 
13
local bzrRoot helpArgs parentFile
 
14
typeset -A opt_args
 
15
 
 
16
helpArgs=( '(--help)-h[show help message]' '(-h)--help[show help message]' )
 
17
bzrRoot=$(bzr root 2> /dev/null)
 
18
parentFile=$bzrRoot/.bzr/parent
 
19
 
 
20
if [[ $service == "bzr" ]]; then
 
21
    _arguments -C -A "-*" \
 
22
    '*::command:->subcmd' && return 0
 
23
 
 
24
    if (( CURRENT == 1 )); then
 
25
      _bzr_subcommands=(${(f)"$(_call_program bzr bzr shell-complete)"})
 
26
      _describe -t subcommand 'subcommand' _bzr_subcommands
 
27
      return
 
28
    fi
 
29
 
 
30
    service="$words[1]"
 
31
    curcontext="${curcontext%:*}=$service:"
 
32
fi
 
33
 
 
34
_unknownFiles() {
 
35
    local fileList;
 
36
    fileList=(${(ps:\0:)"$(bzr ls --null --unknown)"})
 
37
    compadd -af fileList
 
38
    return 0
 
39
}
 
40
 
 
41
_unknownRoot() {
 
42
    local fileList;
 
43
    fileList=(${(ps:\0:)"$(bzr ls --null --from-root --unknown)"})
 
44
    compadd -af fileList
 
45
    return 0
 
46
}
 
47
 
 
48
_versionedFiles() {
 
49
    local fileList;
 
50
    fileList=(${(ps:\0:)"$(bzr ls --null --versioned)"})
 
51
    compadd -af fileList
 
52
    return 0
 
53
}
 
54
 
 
55
case $service in
 
56
    (add)
 
57
       _arguments $helpArgs \
 
58
       '--no-recurse[do not recurse into subdirectories]' \
 
59
       '(-q)--quiet' \
 
60
       '(--quiet)-q' \
 
61
       '*:unknown files:_unknownFiles'
 
62
    ;;
 
63
 
 
64
    (annotate|praise|blame)
 
65
        _arguments $helpArgs '*:files:_versionedFiles'
 
66
    ;;
 
67
 
 
68
    (clone|branch|get)
 
69
        if (( CURRENT == 2 )); then
 
70
            _arguments $helpArgs \
 
71
            '(-r)--revision:rev:' \
 
72
            '(--revision)-r:rev:' \
 
73
            '--basis[specify basis branch]:basis:' \
 
74
            '*:FROM_LOCATION:_files -/'
 
75
        elif (( CURRENT == 3 )); then
 
76
            _arguments $helpArgs \
 
77
            '(-r)--revision:rev:' \
 
78
            '(--revision)-r:rev:' \
 
79
            '--basis[specify basis branch]:basis:' \
 
80
            '*:TO_LOCATION:_files -/'
 
81
        fi
 
82
    ;;
 
83
 
 
84
    (rename|mv)
 
85
        if (( CURRENT == 2 )); then
 
86
            _arguments $helpArgs '*:old name:_versionedFiles'
 
87
        else
 
88
            _arguments $helpArgs '*:new name:'
 
89
        fi
 
90
    ;;
 
91
 
 
92
    (cat)
 
93
        _arguments $helpArgs \
 
94
        '(-r)--revision:rev:' \
 
95
        '(--revision)-r:rev:' \
 
96
        '*:file:_versionedFiles'
 
97
    ;;
 
98
 
 
99
    (root)
 
100
        _arguments $helpArgs '*:file:_files'
 
101
    ;;
 
102
 
 
103
    (log)
 
104
        _arguments $helpArgs \
 
105
        '(-r)--revision[revision or range]:rev or rev range:' \
 
106
        '(--revision)-r[revision or range]:rev or rev range:' \
 
107
        '(--verbose)-v[show revision manifest]' \
 
108
        '(-v)--verbose[show revision manifest]' \
 
109
        '(--short --long)-l[use long format (default)]' \
 
110
        '(--short -l)--long[use long format (default)]' \
 
111
        '(-l --long)--short[use short format]' \
 
112
        '(--message)-m[specify regexp]:regexp:' \
 
113
        '(-m)--message[specify regexp]:regexp:' \
 
114
        '--show-ids[show file IDs]' \
 
115
        '--forward[reverse direction of revisions]' \
 
116
        '--timezoe[specify timezone for dates]:timezone:' \
 
117
        '*:file:_versionedFiles'
 
118
    ;;
 
119
 
 
120
    (resolve)
 
121
        _arguments $helpArgs '--all' '*:file:_versionedFiles'
 
122
    ;;
 
123
 
 
124
    (status|st|stat)
 
125
        _arguments $helpArgs \
 
126
        '--all[include unchanged versioned files]' \
 
127
        '--show-ids[show file IDs]' \
 
128
        '*:file:_versionedFiles'
 
129
    ;;
 
130
 
 
131
    (check)
 
132
        _arguments $helpArgs \
 
133
        '(--verbose)-v' \
 
134
        '(-v)--verbose' \
 
135
        '*:DIR:_files -/'
 
136
    ;;
 
137
 
 
138
    (mkdir|upgrade|renames)
 
139
        _arguments $helpArgs '*:DIR:_files -/'
 
140
    ;;
 
141
 
 
142
    (remove|rm)
 
143
        _arguments $helpArgs \
 
144
        '(--verbose)-v' \
 
145
        '(-v)--verbose' \
 
146
        '*:file:_versionedFiles'
 
147
    ;;
 
148
 
 
149
    (pull)
 
150
        _arguments $helpArgs \
 
151
        '--remember[Remember the specified location as a default]' \
 
152
        '--overwrite[Ignore differences, overwrite unconditionally]' \
 
153
        '*:local repository:_files -/'
 
154
        [[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile)
 
155
    ;;
 
156
 
 
157
    (missing|miss|mis)
 
158
        _arguments $helpArgs \
 
159
        '(--verbose -q --quiet)-v' \
 
160
        '(-v -q --quiet)--verbose' \
 
161
        '(--verbose -v --quiet)-q' \
 
162
        '(-v -q --verbose)--quiet' \
 
163
        '*:local repository:_files -/'
 
164
        [[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile)
 
165
    ;;
 
166
 
 
167
    (commit|checkin|ci)
 
168
        _arguments $helpArgs \
 
169
        '(--message)-m[commit message]:message text:' \
 
170
        '(-m)--message[commit message]:message text:' \
 
171
        '(--file)-F[commit message from file]:message file:' \
 
172
        '(-F)--file[commit message from file]:message file:' \
 
173
        '--unchanged[include unchanged files]' \
 
174
        '(--verbose)-v' \
 
175
        '(-v)--verbose' \
 
176
        '*:modified files:_versionedFiles'
 
177
    ;;
 
178
 
 
179
    (conflicts|added|deleted|modified|unknowns|directories|ignored)
 
180
        _arguments $helpArgs
 
181
    ;;
 
182
 
 
183
    (revno|init|version)
 
184
        _arguments $helpArgs
 
185
    ;;
 
186
 
 
187
    (whoami)
 
188
        _arguments $helpArgs '--email[only show e-mail address]' 
 
189
    ;;
 
190
 
 
191
    (inventory)
 
192
        _arguments $helpArgs \
 
193
        '(-r)--revision[show inventory of a revision]:revision:' \
 
194
        '(--revision)-r[show inventory of a revision]:revision:' \
 
195
        '--show-ids[show file IDs]'
 
196
    ;;
 
197
 
 
198
    (diff|dif|di)
 
199
        _arguments $helpArgs \
 
200
        '(-r)--revision:revision:' \
 
201
        '(--revision)-r:revision:' \
 
202
        '--diff-options[options to pass to gdiff]:diff options:' \
 
203
        '*:files:_files'
 
204
    ;;
 
205
 
 
206
    (export)
 
207
        _arguments $helpArgs \
 
208
        '(-r)--revision:revision:' \
 
209
        '(--revision)-r:revision:' \
 
210
        '--format=[format of exported file]:format:(dir tar tgz tbz2)' \
 
211
        '--root[root directory of patch]:_files -/' \
 
212
        '*:destination:_files'
 
213
    ;;
 
214
 
 
215
    (ignore)
 
216
        _arguments $helpArgs '*:NAME_PATTERN:_unknownRoot'
 
217
    ;;
 
218
 
 
219
    (info)
 
220
        _arguments $helpArgs '*:branch:_files -/'
 
221
    ;;
 
222
 
 
223
    (testament)
 
224
        _arguments $helpArgs \
 
225
        '(-r)--revision:revision:' \
 
226
        '(--revision)-r:revision:' \
 
227
        '(--long)-l' \
 
228
        '(-l)--long' \
 
229
        '*:branch:_files -/'
 
230
    ;;
 
231
 
 
232
    (revert|merge-revert)
 
233
        _arguments $helpArgs \
 
234
        '(-r)--revision:revision:' \
 
235
        '(--revision)-r:revision:' \
 
236
        '--no-backup[skip generation of backup~ files]' \
 
237
        '*:file:_versionedFiles'
 
238
    ;;
 
239
 
 
240
    (merge)
 
241
        _arguments $helpArgs \
 
242
        '(-r)--revision:revision:' \
 
243
        '(--revision)-r:revision:' \
 
244
        '--reprocess[Reprocess to reduce spurious conflicts]' \
 
245
        '--show-base[Show base revision text in conflicts]' \
 
246
        '--force[ignore uncommitted changes]' \
 
247
        '--merge-type:merge type:(diff3 merge3 weave)' \
 
248
        '*:local repository:_files -/'
 
249
        [[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile)
 
250
    ;;
 
251
 
 
252
    (ls)
 
253
        _arguments $helpArgs \
 
254
        '(--verbose)-v[display more information]' \
 
255
        '(-v)--verbose[display more information]' \
 
256
        '(-r)--revision:revision:' \
 
257
        '(--revision)-r:revision:' \
 
258
        '--from-root[Print all paths from the root of the branch]' \
 
259
        '--non-recursive[Do not recurse into subdirectories]' \
 
260
        '--null[Null separate the files]' \
 
261
        '--ignored[Print ignored files]' \
 
262
        '--unknown[Print unknown files]' \
 
263
        '--versioned[Print versioned files]'
 
264
    ;;
 
265
 
 
266
    (move)
 
267
        if (( CURRENT == 2 )); then
 
268
            _arguments $helpArgs '*:files:_versionedFiles'
 
269
        else
 
270
            _arguments '*:destination dir:_files -/'
 
271
        fi
 
272
    ;;
 
273
 
 
274
    (help)
 
275
        _bzr_subcommands=(${(f)"$(_call_program bzr bzr shell-complete)"})
 
276
        _arguments $helpArgs \
 
277
        '(--long)-l' \
 
278
        '(-l)--long' \
 
279
        '*:subcmds:->cmds'
 
280
        _describe -t subcommand 'subcommand' _bzr_subcommands
 
281
    ;;
 
282
 
 
283
    # Plugins
 
284
 
 
285
    (visualize|visualise|viz|vis)
 
286
        _arguments $helpArgs \
 
287
            '(-r)--revision[starting revision]:rev:' \
 
288
            '(--revision)-r[starting revision]:rev:'
 
289
    ;;
 
290
 
 
291
    (gannotate|gblame|gpraise)
 
292
        _arguments $helpArgs \
 
293
            '--all[show annotations on all lines]' \
 
294
            '--plain[do not hightlight annotation lines]' \
 
295
            '*:files:_versionedFiles'
 
296
    ;;
 
297
 
 
298
    (push)
 
299
        _arguments $helpArgs \
 
300
        '--overwrite[Ignore differences, overwrite unconditionally]' \
 
301
        '*:local repository:_files -/'
 
302
        [[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile)
 
303
    ;;
 
304
 
 
305
    (clean-tree)
 
306
        _arguments $helpArgs \
 
307
        '--dry-run[show files to delete instead of deleting them]' \
 
308
        '--ignored[delete all ignored files]' \
 
309
        '--detritus[delete conflict files, merge backups, failed self-tests, *~, *.tmp, etc]'
 
310
    ;;
 
311
 
 
312
 
 
313
    (*)
 
314
        _message "unknown bzr command completion: $service"
 
315
    ;;
 
316
esac