about summary refs log tree commit diff
path: root/Completion/Debian
diff options
context:
space:
mode:
authorClint Adams <clint@users.sourceforge.net>2005-04-19 17:05:45 +0000
committerClint Adams <clint@users.sourceforge.net>2005-04-19 17:05:45 +0000
commit18e7c60420e171e2f72cf6d93a0adfad629c81ad (patch)
tree3491f7a049794cc7580dd7ebe9d1c17420bde023 /Completion/Debian
parent1dbf54ab5b7445eb56053cde5fb7c4b2b1425bfa (diff)
downloadzsh-18e7c60420e171e2f72cf6d93a0adfad629c81ad.tar.gz
zsh-18e7c60420e171e2f72cf6d93a0adfad629c81ad.tar.xz
zsh-18e7c60420e171e2f72cf6d93a0adfad629c81ad.zip
21156: tweaks to dpkg-reconfigure completion.
Diffstat (limited to 'Completion/Debian')
-rw-r--r--Completion/Debian/Command/_dpkg149
1 files changed, 149 insertions, 0 deletions
diff --git a/Completion/Debian/Command/_dpkg b/Completion/Debian/Command/_dpkg
new file mode 100644
index 000000000..962adf825
--- /dev/null
+++ b/Completion/Debian/Command/_dpkg
@@ -0,0 +1,149 @@
+#compdef dpkg dpkg-deb 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 curcontext="$curcontext" context state line expl ret
+typeset -A opt_args
+
+_dpkg_deb_actions=(
+  '(--build -b)'{--build,-b}'[build archive]:directory:_files -/'
+  '(--contents -c)'{--contents,-c}'[list contents]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--info -I)'{--info,-I}'[show info]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--field -f)'{--field,-f}'[show fields]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--control -e)'{--control,-e}'[extract control]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--extract -x)'{--extract,-x}'[extract files]:Debian package:_files -g "*.u#deb(-.)"'
+  '(--vextract -X)'{--vextract,-X}'[extract and list files]:Debian package:_files -g "*.u#deb(-.)"'
+  '--fsys-tarfile[output fs tarfile]:Debian package:_files -g "*.u#deb(-.)"'
+)
+
+_dpkg_common_actions=(
+  '--help[show help]'
+  '--version[show version]'
+  '(--license --licence)'{--license,--licence}'[show licencing]'
+)
+
+_dpkg_actions=(
+  '(--install -i)'{--install,-i}'[install packages]:*:Debian packages:->install'
+  '--unpack[unpack package]:Debian package:_files -g "*.deb(-.)"'
+  '--configure[reconfigure specified packages]:*:package:->configure'
+  '(--remove -r)'{--remove,-r}'[remove package]:*:package:->remove'
+  '(--purge -P)'{--purge,-P}'[purge package]:*:package:->purge'
+  '(--print-avail -p)'{--print-avail,-p}'[display available details]:packages:_deb_packages avail'
+  '--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]'
+  '(--list -l)'{--list,-l}'[list packages]:*:packages:->list'
+  '(--status -s)'{--status,-s}'[display package status]:*:packages:->status'
+  '(--audit -C)'{--audit,-C}'[check for broken pkgs]'
+  '--get-selections[get selections]:pattern:'
+  '--set-selections[set selections]'
+  '--yet-to-unpack[list uninstalled]'
+  '(--listfiles, -L)'{--listfiles,-L}'[list owned files]:*:packages:->listfiles'
+  '(--search -S)'{--search,-S}'[search for file owner]:*:pattern:->search'
+  '--print-architecture[print target architecture]'
+  '--print-gnu-build-architecture'
+  '--print-installation-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)'{--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:(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
+  ;;
+  dpkg-reconfigure)
+    _arguments -sw \
+      '(-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 \
+	'*:Debian package:_path_files -g "*.deb(-.)"'
+  ;;
+  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
+  ;;
+esac