diff options
-rw-r--r-- | Completion/Debian/Command/_dpkg | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/Completion/Debian/Command/_dpkg b/Completion/Debian/Command/_dpkg new file mode 100644 index 000000000..a9084ffa4 --- /dev/null +++ b/Completion/Debian/Command/_dpkg @@ -0,0 +1,145 @@ +#compdef dpkg dpkg-deb + +local _dpkg_deb_actions _dpkg_common_actions _dpkg_actions _dpkg_options +local _dpkg_options_recursive _dpkg_actions_install _dpkg_actions_record_avail +local curcontext="$curcontext" context state line expl ret +typeset -A opt_args + +_dpkg_deb_actions=('(--build)-b[build archive]:directory:_files -/' \ + '(-b)--build:directory:_files -/' \ + '(--contents)-c[list contents]:Debian package:_files -g \*.deb' \ + '(-c)--contents:Debian package:_files -g \*.deb' \ + '(--info)-I[show info]:Debian package:_files -g \*.deb' \ + '(-I)--info:Debian package:_files -g \*.deb' \ + '(--field)-f[show fields]:Debian package:_files -g \*.deb' \ + '(-f)--field:Debian package:_files -g \*.deb' \ + '(--control)-e[extract control]:Debian package:_files -g \*.deb' \ + '(-e)--control:Debian package:_files -g \*.deb' \ + '(--extract)-x[extract files]:Debian package:_files -g \*.deb' \ + '(-x)--extract:Debian package:_files -g \*.deb' \ + '(--vextract)-X[extract and list files]:Debian package:_files -g \*.deb' \ + '(-X)--vextract[extract and list]:Debian package:_files -g \*.deb' \ + '--fsys-tarfile[output fs tarfile]:Debian package:_files -g \*.deb') + +_dpkg_common_actions=('--help[show help]' \ + '--version[show version]' \ + '(--license)--licence[show licencing]' \ + '(--licence)--license[show licensing]') + +_dpkg_actions=('(--install)-i[install packages]:*:Debian packages:->install' \ + '(-i)--install:*:Debian packages:->install' \ + '--unpack[unpack package]:Debian package:_files -g \*.deb' \ + '--configure:*:package:->configure' \ + '(--remove)-r[remove package]:*:package:->remove' \ + '(-r)--remove:*:package:->remove' \ + '(--purge)-P[purge package]:*:package:->purge' \ + '(-P)--purge:*:package:->purge' \ + '(--print-avail)-p[display available details]:packages:_deb_packages avail' \ + '(-p)--print-avail:packages:_deb_packages avail' \ + '--update-avail[update available]:package file:_files' \ + '--merge-avail[merge available]:package file:_files' \ + '(--record-avail)-A[record available]:*:package files:->record_avail' \ + '(-A)--record-avail:*:package files:->record_avail' \ + '--forget-old-unavail[forget uninstalled unavailable]' \ + '--clear-avail[clear available]' \ + '(--list)-l[list packages]:*:packages:->list' \ + '(-l)--list:*:packages:->list' \ + '(--status)-s[display package status]:*:packages:->status' \ + '(-s)--status:*:packages:->status' \ + '(--audit)-C[check for broken pkgs]' \ + '(-C)--audit' \ + '--get-selections[get selections]:pattern:' \ + '--set-selections[set selections]' \ + '--yet-to-unpack[list uninstalled]' \ + '(--listfiles)-L[list owned files]:*:packages:->listfiles' \ + '(-L)--listfiles:*:packages:->listfiles' \ + '(--search)-S[search for file owner]:*:pattern:->search' \ + '(-S)--search:*:pattern:->search' \ + '--print-architecture[print target architecture]' \ + '--print-gnu-build-architecture[print GNU version of target architecture]' \ + '--print-installation-architecture[print host architecture]' \ + '--compare-versions[compare version numbers]:*:expression:->compare_versions') + +_dpkg_options=('--abort-after[abort after errors]:number of errors:' \ + '--admindir=[data directory]:directory:_files -/' \ + '--root=[alternative root]:root:_files -/' \ + '--instdir=[change inst root but not data dir]:_files -/' \ + '(--selected-only)-O[skip unselected packages]' \ + '(-O)--selected-only' \ + '(--skip-same-version)-E[skip packages with same version as installed]' \ + '(-E)--skip-same-version' \ + '(--refuse-downgrade)-G[skip packages with earlier version than installed]' \ + '(-G)--refuse-downgrade' \ + '(--auto-deconfigure)-B[install can break other packages]' \ + '(-B)--auto-deconfigure' \ + '--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:(auto-select downgrade configure-any hold bad-path not-root overwrite overwrite-diverted depends-version depends confnew confold confdef confmiss conflicts architecture overwrite-dir remove-reinstreq remove-essential)') + +_dpkg_options_recursive=('(--recursive)-R[recursive]' '(-R)--recursive') + +# 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[@]" && return 0 +;; + +dpkg-deb) +_arguments "$_dpkg_deb_actions[@]" \ + "$_dpkg_common_actions[@]" && 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 \ + '*:Debian package:_path_files -g \*.deb' + ;; + remove|purge|status|listfiles) + _call_function ret _dpkg_$state && return ret + _arguments -C -A "-*" -s "$_dpkg_options[@]" \ + '*:package:_deb_packages installed' + ;; + 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 "$_dpkg_options[@]" \ + '2:version A:' \ + '3:operator:(lt le eq ne ge gt lt-nl le-nl ge-nl gt-nl)' \ + '4:version B:' + ;; + configure) + _call_function ret _dpkg_$state && return ret + _arguments -C -A "-*" -s '--configure' \ + "$_dpkg_options[@]" \ + '(--pending)-a[pending packages]' \ + '(-a)--pending' \ + '*:package:_deb_packages installed' + ;; +esac |