1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
|
#compdef dpkg dpkg-deb dpkg-query dpkg-reconfigure
local _dpkg_deb_actions _dpkg_common_actions _dpkg_actions _dpkg_options
local _dpkg_options_recursive #_dpkg_actions_install _dpkg_actions_record_avail
local _dpkg_deb_only_actions
local _dpkg_deb_and_query_only_actions _dpkg_deb_and_query_only_options
local _dpkg_query_actions
local curcontext="$curcontext" context state line expl ret
typeset -A opt_args
_dpkg_deb_only_actions=(
'-D[debugging output]'
'(--new)--old[old archive format]'
'(--old)--new[new archive format]'
'--nocheck[suppress control file check]'
'-z+[compression level]:compression number:(1 2 3 4 5 6 7 8 9)'
)
_dpkg_deb_actions=(
'(--build -b)'{--build,-b}'[build archive]:directory:_files -/'
'(--contents -c)'{--contents,-c}'[list contents]: :_deb_files'
'(--info -I)'{--info,-I}'[show info]: :_deb_files'
'(--field -f)'{--field,-f}'[show fields]: :_deb_files'
'(--control -e)'{--control,-e}'[extract control]: :_deb_files'
'(--extract -x)'{--extract,-x}'[extract files]: :_deb_files'
'(--vextract -X)'{--vextract,-X}'[extract and list files]: :_deb_files'
'--fsys-tarfile[output fs tarfile]: :_deb_files'
)
_dpkg_common_actions=(
'--help[show help]'
'--version[show version]'
'(--license --licence)'{--license,--licence}'[show licensing]'
)
_dpkg_actions=(
'(--install -i)'{--install,-i}'[install packages]:*:Debian packages:->install'
'--unpack[unpack package]: :_deb_files'
'--configure[reconfigure specified packages]:*:package:->configure'
'(--remove -r)'{--remove,-r}'[remove package]:*:package:->remove'
'(--purge -P)'{--purge,-P}'[purge package]:*:package:->purge'
'--update-avail[update available]:package file:_files'
'--merge-avail[merge available]:package file:_files'
'(--record-avail -A)'{--record-avail,-A}'[record available]:*:package files:->record_avail'
'--forget-old-unavail[forget uninstalled unavailable]'
'--clear-avail[clear available]'
'(--audit -C)'{--audit,-C}'[check for broken pkgs]'
'--get-selections[get selections]:pattern:'
'--set-selections[set selections]'
'--yet-to-unpack[list uninstalled]'
'--print-architecture[print target architecture]'
'--print-installation-architecture'
'--print-foreign-architectures[print list of extra architectures]'
'--add-architecture[add extra architecture]:architecture:->add_architecture'
'--remove-architecture[remove extra architecture]:architecture:->remove_architecture'
'--compare-versions[compare version numbers]:*::expression:= ->compare_versions'
)
_dpkg_options=(
'--abort-after[abort after errors]:number of errors:'
'--root=[alternative root]:root:_files -/'
'--instdir=[change inst root but not data dir]:_files -/'
'(--selected-only -O)'{--selected-only,-O}'[skip unselected packages]'
'(--skip-same-version -E)'{--skip-same-version,-E}'[skip packages with same version as installed]'
'(--refuse-downgrade -G)'{--refuse-downgrade,-G}'[skip packages with earlier version than installed]'
'(--auto-deconfigure -B)'{--auto-deconfigure,-B}'[install can break other packages]'
'--largemem[optimize for >4Mb RAM]'
'--smallmem[optimize for <4Mb RAM]'
'--no-act[show potential actions but do not follow through]'
'-D+[debug options]:debug options:(h 1 2 3)'
'--debug=[debug options]:debug options:(help 1 2 3)'
'--ignore-depends=[ignore depends involving package]:package:_deb_packages avail'
--{force,refuse,no-force}'--[forcing options]:what:(all downgrade configure-any hold bad-path not-root overwrite overwrite-diverted bad-verify depends-version depends confnew confold confdef confmiss conflicts architecture overwrite-dir remove-reinstreq remove-essential help)'
)
_dpkg_options_recursive=( '(--recursive -R)'{--recursive,-R}'[recursive]' )
_dpkg_deb_and_query_only_actions=(
'(--show -W)'{--show,-W}'[show package info]: :_deb_files'
)
_dpkg_deb_and_query_only_options=(
'--showformat=-[alternative format]:format: '
)
_dpkg_query_actions=(
'(--status -s)'{--status,-s}'[display package status]:*:packages:->status'
'(--print-avail -p)'{--print-avail,-p}'[display available details]:packages:_deb_packages avail'
'(--listfiles, -L)'{--listfiles,-L}'[list owned files]:*:packages:->listfiles'
'(--list -l)'{--list,-l}'[list packages]:*:packages:->list'
'(--search -S)'{--search,-S}'[search for file owner]:*:pattern:->search'
'--admindir=[data directory]:directory:_files -/'
)
# not needed anymore?
# _dpkg_actions_install=('(--install)-i[install]' '(-i)--install')
# _dpkg_actions_record_avail=('(--record-avail)-A[record available]' '(-A)--record-avail')
case "$service" in
dpkg)
_arguments -C -s \
"$_dpkg_actions[@]" \
"$_dpkg_deb_actions[@]" \
"$_dpkg_common_actions[@]" \
"$_dpkg_options[@]" \
"$_dpkg_options_recursive[@]" \
"$_dpkg_query_actions[@]" && return 0
;;
dpkg-deb)
_arguments "$_dpkg_deb_actions[@]" \
"$_dpkg_deb_only_actions[@]" \
"$_dpkg_common_actions[@]" \
"$_dpkg_deb_and_query_only_actions[@]" \
"$_dpkg_deb_and_query_only_options[@]" && return 0
;;
dpkg-query)
_arguments "$_dpkg_query_actions[@]" \
"$_dpkg_common_actions[@]" \
"$_dpkg_deb_and_query_only_actions[@]" \
"$_dpkg_deb_and_query_only_options[@]" && return 0
;;
dpkg-reconfigure)
_arguments -s -w \
'(-f --frontend)'{-f,--frontend}'[select frontend to use]:frontend:(dialog readline noninteractive gnome kde editor web)' \
'(-p --priority)'{-p,--priority}'[specify min priority of questions]:priority:(low medium high critical)' \
'--default-priority[use default question priority]' \
'(*)--all[reconfigure all installed packages using debconf]' \
'(-u --unseen-only)'{-u,--unseen-only}'[only ask questions not yet seen are asked]' \
'--force[reconfigure even packages in broken state]' \
'(-)'{-h,--help}'[display help information]' \
'*:package:_deb_packages installed' && return 0
;;
esac
case "$state" in
install|record_avail)
_call_function ret _dpkg_$state && return ret
# not needed anymore?
# "${(@e):-\$_dpkg_actions_${state}}" \
_arguments -C -A '-*' -s \
"$_dpkg_options[@]" \
\!${^_dpkg_actions%%:*} \
- recur \
"$_dpkg_options_recursive[@]" \
'*:directory:_path_files -/' \
- nonrecur \
'*: :_deb_files'
;;
remove|status|listfiles)
_call_function ret _dpkg_$state && return ret
_arguments -C -A "-*" -s "$_dpkg_options[@]" \
'*:package:_deb_packages installed'
;;
purge)
_call_function ret _dpkg_$state && return ret
_arguments -C -A "-*" -s "$_dpkg_options[@]" \
'*:package:_deb_packages xinstalled'
;;
list)
_call_function ret _dpkg_$state && return ret
_arguments -C -A "-*" -s "$_dpkg_options[@]" \
'*:packages:_deb_packages avail'
;;
compare_versions)
_call_function ret _dpkg_$state && return ret
_arguments -C -A "-*" -s \
'1:version A:' \
'2:operator:(lt le eq ne ge gt lt-nl le-nl ge-nl gt-nl)' \
'3:version B:'
;;
configure)
_call_function ret _dpkg_$state && return ret
_arguments -C -A "-*" -s '--configure' \
"$_dpkg_options[@]" \
'(* -a --pending)'{-a,--pending}'[pending packages]' \
'*:package:_deb_packages installed'
;;
search)
_call_function ret _dpkg_$state && return ret
_files
;;
add_architecture)
_call_function ret _dpkg_$state && return ret
_wanted architecture expl 'extra architecture' \
compadd ${(f)"$(dpkg-architecture -L 2>/dev/null)"}
;;
remove_architecture)
_call_function ret _dpkg_$state && return ret
_wanted architecture expl 'extra architecture' \
compadd ${(f)"$(dpkg --print-foreign-architectures 2>/dev/null)"}
esac
|