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