~apt-fast/apt-fast/apt-fast-ro

« back to all changes in this revision

Viewing changes to completions/zsh/_apt-fast

  • Committer: Dominique Lasserre
  • Date: 2012-09-24 20:55:38 UTC
  • Revision ID: git-v1:78eb613270be93c862cb260e4024b8517d268ee4
Add zsh completion. Closes #40

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#compdef apt-fast
 
2
 
 
3
# Debian apt-fast(8) zsh completion.
 
4
# Copy of zsh (4.3.17-1) _apt-get function from _apt completion.
 
5
 
 
6
# usage: _apt_arguments funcname option-spec... -- rest-regex
 
7
_apt_arguments () {
 
8
 
 
9
  local funcname
 
10
  funcname="$1"
 
11
  shift
 
12
 
 
13
  typeset -A canonicalize num_options
 
14
  local short_hasarg short_bool short_intlevel short_configfile short_arbitem
 
15
  local long_hasarg long_bool long_intlevel long_configfile long_arbitem
 
16
  local short_release long_release
 
17
  local comp_hasarg=''
 
18
  local opt opts type
 
19
 
 
20
  while [[ 0 -lt $# && $1 != -- ]]; do
 
21
    opts="${1%%:*}"
 
22
    type="${1#*:}"
 
23
 
 
24
    case $type in
 
25
      bool) num_options[$opts]=1;;
 
26
      intlevel) num_options[$opts]=-1;;
 
27
      configfile) num_options[$opts]=1;;
 
28
      arbitem) num_options[$opts]=-1;;
 
29
      release) num_options[$opts]=1;;
 
30
      *) num_options[$opts]=1
 
31
         comp_hasarg="${comp_hasarg}$opts) $type;;"$'\n'
 
32
         type=hasarg;;
 
33
    esac
 
34
 
 
35
    for opt in ${(s:,:)=opts}; do
 
36
      canonicalize[$opt]="$opts"
 
37
      case $opt in
 
38
        --*) eval "long_$type=(\$long_$type ${opt#--})";;
 
39
        -?) eval "short_$type=(\$short_$type ${opt#-})";;
 
40
      esac
 
41
    done
 
42
    shift
 
43
  done
 
44
 
 
45
  # skip --
 
46
  [[ 0 -lt $# ]] && shift
 
47
 
 
48
  comp_hasarg="{case \$current_option in
 
49
  ${comp_hasarg}esac}"
 
50
 
 
51
  local short_seq false true bool bool_prefix intlevel word word1 nul qnul match
 
52
  local comp_bool comp_intlevel comp_configfile comp_arbitem comp_long comp_opt
 
53
  local comp_release comp_long_prefix comp_short
 
54
  local regex_short regex_long regex_all regex_long_prefix
 
55
 
 
56
  regex_all=( \( "$@" \) )
 
57
 
 
58
  short_seq="(${(j:|:)short_bool}|${(j:|:)short_intlevel})#"
 
59
 
 
60
  false=(no false without off disable)
 
61
  true=(yes true with on enable)
 
62
  bool=($false $true)
 
63
 
 
64
  bool_prefix=(--${^bool}-)
 
65
 
 
66
  intlevel='[0-9]##'
 
67
 
 
68
  word=$'[^\0]#\0'
 
69
  word1=$'[^\0]##\0'
 
70
  nul=$'\0'
 
71
  qnul="\$'\\0'"
 
72
 
 
73
  comp_bool="($bool)"
 
74
  comp_intlevel=
 
75
  comp_configfile='_files'
 
76
  comp_arbitem=
 
77
  comp_release='_apt_releases'
 
78
 
 
79
  comp_short=\
 
80
'{if [[ $PREFIX = -'"$short_seq"' ]]; then
 
81
  _apt_consume_short ${PREFIX[2,-1]}
 
82
  tmp1=(${(M)${(s:,:)${(kj:,:)num_options[(R)*~0]}}:#-?})
 
83
  tmp2=(${PREFIX}${^tmp1#-})
 
84
  _describe -o option tmp1 tmp2
 
85
elif [[ -z "$PREFIX" ]]; then
 
86
  tmp1=(${(M)${(s:,:)${(kj:,:)num_options[(R)*~0]}}:#-?})
 
87
  _describe -o option tmp1
 
88
fi}'
 
89
 
 
90
  comp_long=\
 
91
'tmp1="${(j:|:)${(@)${(@M)${(@s:,:)${(@kj:,:)num_options[(R)*~0]}}:#--*}#--}}"
 
92
tmp2=(--${(M)^long_bool:#$~tmp1} --${(M)^long_intlevel:#$~tmp1})
 
93
tmp3=(--${(M)^long_hasarg:#$~tmp1} --${(M)^long_configfile:#$~tmp1} --${(M)^long_arbitem:#$~tmp1} --${(M)^long_release:#$~tmp1})
 
94
_describe -o option tmp2 -- tmp3 -S= -- bool_prefix -S ""'
 
95
 
 
96
  comp_long_prefix=\
 
97
'{tmp1="${(j:|:)${(@)${(@M)${(@s:,:)${(@kj:,:)num_options[(R)*~0]}}:#--*}#--}}"
 
98
tmp2=($_ra_left${(M)^long_bool:#$~tmp1} $_ra_left${(M)^long_intlevel:#$~tmp1})
 
99
tmp3=($_ra_left${(M)^long_hasarg:#$~tmp1} $_ra_left${(M)^long_configfile:#$~tmp1} $_ra_left${(M)^long_arbitem:#$~tmp1} $_ra_left${(M)^long_release:#$~tmp1})
 
100
tmp1="${(j:|:)${(@)${(@M)${(@s:,:)${(@kj:,:)num_options[(R)*~0]}}:#-?}#-}}"
 
101
tmp2=("$tmp2[@]" $_ra_left${(M)^short_bool:#$~tmp1} $_ra_left${(M)^short_intlevel:#$~tmp1})
 
102
tmp3=("$tmp3[@]" $_ra_left${(M)^short_hasarg:#$~tmp1} $_ra_left${(M)^short_configfile:#$~tmp1} $_ra_left${(M)^short_arbitem:#$~tmp1} $_ra_left${(M)^short_release:#$~tmp1})
 
103
_describe -o option tmp2 -- tmp3 -S=}'
 
104
 
 
105
  comp_opt='{{ ! zstyle -T ":completion:${curcontext}:options" prefix-needed || [[ "$PREFIX" = -* ]] }'" && { $comp_short; $comp_long }}"
 
106
  comp_short="{$comp_short}"
 
107
  comp_long="{$comp_long}"
 
108
 
 
109
  regex_short=()
 
110
  regex_long=()
 
111
  regex_long_prefix=()
 
112
 
 
113
  if (( $#short_hasarg )); then
 
114
    regex_short=("$regex_short[@]"
 
115
      /"$short_seq(${(j:|:)short_hasarg})(=|)"/
 
116
        -'_apt_consume_short ${match[1]%=}; current_option=${canonicalize[-${${match[1]%=}[-1]}]}'
 
117
        \( /"$word1"/ ":options:option:$comp_hasarg" \| /"$nul"/ /"$word"/ ":options:option:$comp_hasarg" \) \|
 
118
    )
 
119
    regex_long_prefix=("$regex_long_prefix[@]"
 
120
      /"(${(j:|:)short_hasarg})$nul"/
 
121
        -'_apt_consume_short ${match[1][-2]}; current_option=${canonicalize[-${${match[1]%'$qnul'}[-1]}]}'
 
122
        /"$word"/ ":options:option:$comp_hasarg" \|
 
123
      /"(${(j:|:)short_hasarg})="/
 
124
        -'_apt_consume_short ${match[1][-2]}; current_option=${canonicalize[-${${match[1]%=}[-1]}]}'
 
125
        \( /"$word1"/ ":options:option:$comp_hasarg" \| /"$nul"/ /"$word"/ ":options:option:$comp_hasarg" \) \|
 
126
    )
 
127
  fi
 
128
 
 
129
  if (( $#short_bool )); then
 
130
    regex_short=("$regex_short[@]"
 
131
      /"$short_seq(${(j:|:)short_bool})($nul(${(j:|:)bool})|(${(j:|:)bool})|)$nul"/
 
132
        -'_apt_consume_short ${match[1]%%('$qnul'('${(j:|:)bool}')|('${(j:|:)bool}')|)'$qnul'}' \|
 
133
      /"$short_seq(${(j:|:)short_bool})="/
 
134
        -'_apt_consume_short ${match[1]%=}'
 
135
        \( /"$word1"/ ":names:boolean value:$comp_bool" \| /"$nul"/ /"$word"/ ":names:boolean value:$comp_bool" \) \|
 
136
    )
 
137
    regex_long_prefix=("$regex_long_prefix[@]"
 
138
      /"(${(j:|:)short_bool})="/
 
139
        -'_apt_consume_short ${match[1][-2]}'
 
140
        \( /"$word1"/ ":names:boolean value:$comp_bool" \| /"$nul"/ /"$word"/ ":names:boolean value:$comp_bool" \) \|
 
141
      /"(${(j:|:)short_bool})$nul"/
 
142
        -'_apt_consume_short ${match[1][-2]}'
 
143
        /"((${(j:|:)bool})$nul|)"/ ":names:boolean value:$comp_bool" \|
 
144
    )
 
145
  fi
 
146
 
 
147
  if (( $#short_intlevel )); then
 
148
    regex_short=("$regex_short[@]"
 
149
      /"$short_seq(${(j:|:)short_intlevel})($nul$intlevel|$intlevel|)$nul"/
 
150
        -'_apt_consume_short ${match[1]%%'"($qnul$intlevel|$intlevel|)$qnul"'}' \|
 
151
      /"$short_seq(${(j:|:)short_intlevel})="/
 
152
        -'_apt_consume_short ${match[1]%=}'
 
153
        \( /"$word1"/ ":options:option:$comp_intlevel" \| /"$nul"/ /"$word"/ ":options:option:$comp_intlevel" \) \|
 
154
    )
 
155
    regex_long_prefix=("$regex_long_prefix[@]"
 
156
      /"(${(j:|:)short_intlevel})="/
 
157
        -'_apt_consume_short ${match[1][-2]}'
 
158
        \( /"$word1"/ ":options:option:$comp_intlevel" \| /"$nul"/ /"$word"/ ":options:option:$comp_intlevel" \) \|
 
159
      /"(${(j:|:)short_intlevel})$nul"/
 
160
        -'_apt_consume_short ${match[1][-2]}'
 
161
        /"($intlevel$nul|)"/ ":options:option:$comp_intlevel" \|
 
162
    )
 
163
  fi
 
164
 
 
165
  if (( $#short_configfile )); then
 
166
    regex_short=("$regex_short[@]"
 
167
      /"$short_seq(${(j:|:)short_configfile})(=|)"/
 
168
        -'_apt_consume_short ${match[1]%=}'
 
169
        \( /"$word1"/ ":files:config file:$comp_configfile" \| /"$nul"/ /"$word"/ ":files:config file:$comp_configfile" \) \|
 
170
    )
 
171
    regex_long_prefix=("$regex_long_prefix[@]"
 
172
      /"(${(j:|:)short_configfile})$nul"/
 
173
        -'_apt_consume_short ${match[1][-2]}'
 
174
        /"$word"/ ":files:config file:$comp_configfile" \|
 
175
      /"(${(j:|:)short_configfile})="/
 
176
        -'_apt_consume_short ${match[1][-2]}'
 
177
        \( /"$word1"/ ":files:config file:$comp_configfile" \| /"$nul"/ /"$word"/ ":files:config file:$comp_configfile" \) \|
 
178
    )
 
179
  fi
 
180
 
 
181
  if (( $#short_arbitem )); then
 
182
    regex_short=("$regex_short[@]"
 
183
      /"$short_seq(${(j:|:)short_arbitem})(=|)"/
 
184
        -'_apt_consume_short ${match[1]%=}'
 
185
        \( /"$word1"/ ":options:option:$comp_arbitem" \| /"$nul"/ /"$word"/ ":options:option:$comp_arbitem" \) \|
 
186
    )
 
187
    regex_long_prefix=("$regex_long_prefix[@]"
 
188
      /"(${(j:|:)short_arbitem})$nul"/
 
189
        -'_apt_consume_short ${match[1][-2]}'
 
190
        /"$word"/ ":options:option:$comp_arbitem" \|
 
191
      /"(${(j:|:)short_arbitem})="/
 
192
        -'_apt_consume_short ${match[1][-2]}'
 
193
        \( /"$word1"/ ":options:option:$comp_arbitem" \| /"$nul"/ /"$word"/ ":options:option:$comp_arbitem" \) \|
 
194
    )
 
195
  fi
 
196
 
 
197
  if (( $#short_release )); then
 
198
    regex_short=("$regex_short[@]"
 
199
      /"$short_seq(${(j:|:)short_release})(=|)"/
 
200
        -'_apt_consume_short ${match[1]%=}'
 
201
        \( /"$word1"/ ":releases:release name:$comp_release" \| /"$nul"/ /"$word"/ ":release name:release:$comp_release" \) \|
 
202
    )
 
203
    regex_long_prefix=("$regex_long_prefix[@]"
 
204
      /"(${(j:|:)short_release})$nul"/
 
205
        -'_apt_consume_short ${match[1][-2]}'
 
206
        /"$word"/ ":releases:release name:$comp_release" \|
 
207
      /"(${(j:|:)short_release})="/
 
208
        -'_apt_consume_short ${match[1][-2]}'
 
209
        \( /"$word1"/ ":releases:release name:$comp_release" \| /"$nul"/ /"$word"/ ":releases:release name:$comp_release" \) \|
 
210
    )
 
211
  fi
 
212
 
 
213
  if (( $#long_hasarg )); then
 
214
    regex_long=("$regex_long[@]"
 
215
      /"(${(j:|:)long_hasarg})$nul"/
 
216
        -'_apt_consume_long ${match[1]%'$qnul'}; current_option=${canonicalize[--${match[1]%'$qnul'}]}'
 
217
        /"$word"/ ":options:option:$comp_hasarg" \|
 
218
      /"(${(j:|:)long_hasarg})="/
 
219
        -'_apt_consume_long ${match[1]%=}; current_option=${canonicalize[--${match[1]%=}]}'
 
220
        \( /"$word1"/ ":options:option:$comp_hasarg" \| /"$nul"/ /"$word"/ ":options:option:$comp_hasarg" \) \|
 
221
    )
 
222
    regex_long_prefix=("$regex_long_prefix[@]"
 
223
      /"(${(j:|:)long_hasarg})$nul"/
 
224
        -'_apt_consume_long ${match[1]%'$qnul'}; current_option=${canonicalize[--${match[1]%'$qnul'}]}'
 
225
        /"$word"/ ":options:option:$comp_hasarg" \|
 
226
      /"(${(j:|:)long_hasarg})="/
 
227
        -'_apt_consume_long ${match[1]%=}; current_option=${canonicalize[--${match[1]%=}]}'
 
228
        \( /"$word1"/ ":options:option:$comp_hasarg" \| /"$nul"/ /"$word"/ ":options:option:$comp_hasarg" \) \|
 
229
    )
 
230
  fi
 
231
 
 
232
  if (( $#long_bool )); then
 
233
    regex_long=("$regex_long[@]"
 
234
      /"(${(j:|:)long_bool})="/
 
235
        -'_apt_consume_long ${match[1]%=}'
 
236
        \( /"$word1"/ ":names:boolean value:$comp_bool" \| /"$nul"/ /"$word"/ ":names:boolean value:$comp_bool" \) \|
 
237
      /"(${(j:|:)long_bool})$nul"/
 
238
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
239
        /"((${(j:|:)bool})$nul|)"/ ":names:boolean value:$comp_bool" \|
 
240
    )
 
241
    regex_long_prefix=("$regex_long_prefix[@]"
 
242
      /"(${(j:|:)long_bool})="/
 
243
        -'_apt_consume_long ${match[1]%=}'
 
244
        \( /"$word1"/ ":names:boolean value:$comp_bool" \| /"$nul"/ /"$word"/ ":names:boolean value:$comp_bool" \) \|
 
245
      /"(${(j:|:)long_bool})$nul"/
 
246
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
247
        /"((${(j:|:)bool})$nul|)"/ ":names:boolean value:$comp_bool" \|
 
248
    )
 
249
  fi
 
250
 
 
251
  if (( $#long_intlevel )); then
 
252
    regex_long=("$regex_long[@]"
 
253
      /"(${(j:|:)long_intlevel})="/
 
254
        -'_apt_consume_long ${match[1]%=}'
 
255
        \( /"$word1"/ ":options:option:$comp_intlevel" \| /"$nul"/ /"$word"/ ":options:option:$comp_intlevel" \) \|
 
256
      /"(${(j:|:)long_intlevel})$nul"/
 
257
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
258
        /"($intlevel$nul|)"/ ":options:option:$comp_intlevel" \|
 
259
    )
 
260
    regex_long_prefix=("$regex_long_prefix[@]"
 
261
      /"(${(j:|:)long_intlevel})="/
 
262
        -'_apt_consume_long ${match[1]%=}'
 
263
        \( /"$word1"/ ":options:option:$comp_intlevel" \| /"$nul"/ /"$word"/ ":options:option:$comp_intlevel" \) \|
 
264
      /"(${(j:|:)long_intlevel})$nul"/
 
265
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
266
        /"($intlevel$nul|)"/ ":options:option:$comp_intlevel" \|
 
267
    )
 
268
  fi
 
269
 
 
270
  if (( $#long_configfile )); then
 
271
    regex_long=("$regex_long[@]"
 
272
      /"(${(j:|:)long_configfile})$nul"/
 
273
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
274
        /"$word"/ ":files:config file:$comp_configfile" \|
 
275
      /"(${(j:|:)long_configfile})="/
 
276
        -'_apt_consume_long ${match[1]%=}'
 
277
        \( /"$word1"/ ":files:config file:$comp_configfile" \| /"$nul"/ /"$word"/ ":files:config file:$comp_configfile" \) \|
 
278
    )
 
279
    regex_long_prefix=("$regex_long_prefix[@]"
 
280
      /"(${(j:|:)long_configfile})$nul"/
 
281
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
282
        /"$word"/ ":files:config file:$comp_configfile" \|
 
283
      /"(${(j:|:)long_configfile})="/
 
284
        -'_apt_consume_long ${match[1]%=}'
 
285
        \( /"$word1"/ ":files:config file:$comp_configfile" \| /"$nul"/ /"$word"/ ":files:config file:$comp_configfile" \) \|
 
286
    )
 
287
  fi
 
288
 
 
289
  if (( $#long_arbitem )); then
 
290
    regex_long=("$regex_long[@]"
 
291
      /"(${(j:|:)long_arbitem})$nul"/
 
292
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
293
        /"$word"/ ":options:option:$comp_arbitem" \|
 
294
      /"(${(j:|:)long_arbitem})="/
 
295
        -'_apt_consume_long ${match[1]%=}'
 
296
        \( /"$word1"/ ":options:option:$comp_arbitem" \| /"$nul"/ /"$word"/ ":options:option:$comp_arbitem" \) \|
 
297
    )
 
298
    regex_long_prefix=("$regex_long_prefix[@]"
 
299
      /"(${(j:|:)long_arbitem})$nul"/
 
300
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
301
        /"$word"/ ":options:option:$comp_arbitem" \|
 
302
      /"(${(j:|:)long_arbitem})="/
 
303
        -'_apt_consume_long ${match[1]%=}'
 
304
        \( /"$word1"/ ":options:option:$comp_arbitem" \| /"$nul"/ /"$word"/ ":options:option:$comp_arbitem" \) \|
 
305
    )
 
306
  fi
 
307
 
 
308
  if (( $#long_release )); then
 
309
    regex_long=("$regex_long[@]"
 
310
      /"(${(j:|:)long_release})$nul"/
 
311
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
312
        /"$word"/ ":releases:release name:$comp_release" \|
 
313
      /"(${(j:|:)long_release})="/
 
314
        -'_apt_consume_long ${match[1]%=}'
 
315
        \( /"$word1"/ ":releases:release name:$comp_release" \| /"$nul"/ /"$word"/ ":releases:release name:$comp_release" \) \|
 
316
    )
 
317
    regex_long_prefix=("$regex_long_prefix[@]"
 
318
      /"(${(j:|:)long_release})$nul"/
 
319
        -'_apt_consume_long ${match[1]%'$qnul'}'
 
320
        /"$word"/ ":releases:release name:$comp_release" \|
 
321
      /"(${(j:|:)long_release})="/
 
322
        -'_apt_consume_long ${match[1]%=}'
 
323
        \( /"$word1"/ ":releases:release name:$comp_release" \| /"$nul"/ /"$word"/ ":releases:release name:$comp_release" \) \|
 
324
    )
 
325
  fi
 
326
 
 
327
  regex_all=(
 
328
    /"$word"/
 
329
    \( /--/+ \( "$regex_long[@]"
 
330
                /"(${(j:|:)bool})-"/+
 
331
                  \( "$regex_long_prefix[@]"
 
332
                     /"[]"/ ":options:option:$comp_long_prefix" \) \) \|
 
333
       /-/+ \( "$regex_short[@]" /"[]"/ \) \|
 
334
       /"[]"/ ":options:option:$comp_opt" \) \#
 
335
    "$regex_all[@]"
 
336
  )
 
337
 
 
338
  _regex_arguments "${funcname}_sm" "$regex_all[@]"
 
339
 
 
340
  eval "$funcname () {
 
341
    typeset -A canonicalize num_options
 
342
    canonicalize=(${(kv)canonicalize})
 
343
    num_options=(${(kv)num_options})
 
344
 
 
345
    local short_hasarg short_bool short_intlevel short_configfile short_arbitem
 
346
    local long_hasarg long_bool long_intlevel long_configfile long_arbitem
 
347
    local short_release long_release
 
348
    local bool_prefix
 
349
    short_hasarg=($short_hasarg)
 
350
    short_bool=($short_bool)
 
351
    short_intlevel=($short_intlevel)
 
352
    short_configfile=($short_configfile)
 
353
    short_arbitem=($short_arbitem)
 
354
    short_release=($short_release)
 
355
    long_hasarg=($long_hasarg)
 
356
    long_bool=($long_bool)
 
357
    long_intlevel=($long_intlevel)
 
358
    long_configfile=($long_configfile)
 
359
    long_arbitem=($long_arbitem)
 
360
    long_release=($long_release)
 
361
    bool_prefix=($bool_prefix)
 
362
 
 
363
    local current_option tmp1 tmp2 tmp3
 
364
 
 
365
    ${funcname}_sm
 
366
  }"
 
367
}
 
368
 
 
369
_apt_consume_short () {
 
370
  local short opt
 
371
  for short in ${(s::)1}; do
 
372
    opt="$canonicalize[-$short]"
 
373
    (( 0 < num_options[$opt] && num_options[$opt]-- ))
 
374
  done
 
375
  return 0
 
376
}
 
377
 
 
378
_apt_consume_long () {
 
379
  local long opt
 
380
  opt="$canonicalize[--$1]"
 
381
  (( 0 < num_options[$opt] && num_options[$opt]-- ))
 
382
  return 0
 
383
}
 
384
 
 
385
_apt-fast () {
 
386
  _apt_arguments _apt-fast_sm \
 
387
    -h,--help:bool \
 
388
    -v,--version:bool \
 
389
    -q,--quiet,--silent:intlevel \
 
390
    -d,--download-only:bool \
 
391
    -b,--compile,--build:bool \
 
392
    -s,--simulate,--just-print,--dry-run,--recon,--no-act:bool \
 
393
    -y,--yes,--assume-yes:bool \
 
394
    -f,--fix-broken:bool \
 
395
    -u,--show-upgraded:bool \
 
396
    -V,--verbose-versions:bool \
 
397
    -m,--ignore-missing,--fix-missing:bool \
 
398
    --no-download:bool \
 
399
    --no-install-recommends:bool \
 
400
    --ignore-hold:bool \
 
401
    --no-upgrade:bool \
 
402
    --force-yes:bool \
 
403
    --print-uris:bool \
 
404
    --purge:bool \
 
405
    --list-cleanup:bool \
 
406
    --reinstall:bool \
 
407
    -c,--config-file:configfile \
 
408
    -o,--option:arbitem \
 
409
    -t,--target-release,--default-release:release \
 
410
    --trivial-only:bool \
 
411
    --no-remove:bool \
 
412
    --only-source:bool \
 
413
    --diff-only:bool \
 
414
    --tar-only:bool \
 
415
    --arch-only:bool \
 
416
    --allow-unauthenticated:bool \
 
417
    -- \
 
418
    /$'update\0'/ \| \
 
419
    /$'upgrade\0'/ \| \
 
420
    \( \
 
421
    /$'install\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \
 
422
    /$'[^\0/]#/'/ /$'[^\0/]#\0'/ ':release name::_apt_releases' \) \| \
 
423
    /$'remove\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \# \| \
 
424
    /$'purge\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \# \| \
 
425
    /$'dist-upgrade\0'/ \| \
 
426
    /$'dselect-upgrade\0'/ \| \
 
427
    /$'clean\0'/ \| \
 
428
    /$'autoclean\0'/ \| \
 
429
    /$'changelog\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
 
430
    /$'check\0'/ \| \
 
431
    /$'source\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
 
432
    /$'build-dep\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
 
433
    /$'autoremove\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \# \| \
 
434
    /$'help\0/' \| \
 
435
    /$'markauto\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \# \| \
 
436
    /$'unmarkauto\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \# \| \
 
437
    /"[]"/      ':argument-1::compadd "$expl_action[@]" update upgrade install remove purge dist-upgrade dselect-upgrade clean autoclean changelog check source build-dep autoremove help markauto unmarkauto'
 
438
 
 
439
  _apt-fast () {
 
440
    local expl_action expl_packages
 
441
    _description actions expl_action 'action'
 
442
    _description packages expl_packages 'package'
 
443
 
 
444
    _apt-fast_sm
 
445
  }
 
446
}
 
447
 
 
448
_apt-fast "$@"