summaryrefslogtreecommitdiff
path: root/debian/examples/compctl.dpkg
diff options
context:
space:
mode:
Diffstat (limited to 'debian/examples/compctl.dpkg')
-rw-r--r--debian/examples/compctl.dpkg92
1 files changed, 92 insertions, 0 deletions
diff --git a/debian/examples/compctl.dpkg b/debian/examples/compctl.dpkg
new file mode 100644
index 0000000..d8c142e
--- /dev/null
+++ b/debian/examples/compctl.dpkg
@@ -0,0 +1,92 @@
+#############################################################################
+# Dpkg completion control for zsh.
+#
+# NOTE: Completion for these commands (dpkg, dpkg-source, bug)
+# are included # upstream as part of the new completion system.
+# Seriously consider using that instead.
+#
+# Originally by Joey Hess <joey@kite.ml.org>, GPL copyright.
+# Contributions and fixes from Karl Hegbloom, Fabien Ninoles,
+# Gregor Hoffleit, Csaba Benedek, &c.
+#
+# Currently doesn't handle correctly:
+# Options after -D or --debug.
+# --force- and friends,--ignore-depends,--root= and friends.
+
+# A function to return all available package names.
+# This could be done without grep and awk by replacing that line with
+# reply=(${${(M)${(f)"$(</var/lib/dpkg/status)"}:#Package:*}#Package: })
+function DpkgPackages {
+ reply=(`grep '^Package:' /var/lib/dpkg/status | awk '{ print $2 }'`)
+}
+
+# This array lists all the dpkg options and actions.
+dpkg_options=(-i --install --unpack --configure -r --remove --purge -A \
+--avail --update-avail --merge-avail --yet-to-unpack -l --list -L \
+--listfiles -C --audit -S --search -s --status --help -c --contents -I \
+--info -B --auto-deconfigure -D --debug --largemem --smallmem --no-act \
+-R --recursive -G -O --selected-only -E -e --control --skip-same-version \
+-x --extract -f --field --fsys-tarfile -X --vextract --licence --version \
+-b --build)
+
+# This string lists all dpkg actions that operate on *.deb files,
+# separated by |'s. There can't be any extra whitespace in it!
+dpkg_deb_actions="-i|--install|--unpack|-A|--avail|-c|--contents|-I|--info|-e"
+dpkg_deb_actions="$dpkg_deb_actions|--control|-x|--extract|-f|--field"
+dpkg_deb_actions="$dpkg_deb_actions|--fsys-tarfile|-X|--vextract|-info"
+
+# This string lists all dpkg actions that normally operate on *.deb files,
+# but can operate on directory names if the --recursive option is given to
+# dpkg.
+dpkg_deb_rec_actions="-i|--install|--unpack|-A|--avail"
+
+# This string lists all other dpkg actions that take a directory name as
+# their first parameter, and a filename as their second parameter.
+dpkg_df_actions="-b|--build"
+
+# This string lists dpkg actions that take a directory name as
+# their second parameter.
+dpkg_dir2_actions="-e|--control|-x|--extract|--vextract"
+
+# This string lists all dpkg actions that take a filename as their first
+# parameter (ie, a Packages file).
+dpkg_file_actions="-S|--search|--update-avail|--merge-avail"
+
+# This string lists all dpkg actions that operate on the names of packages
+# and can also be used with the --pending option.
+dpkg_pkg_pending_actions="--configure|-r|--remove|--purge|-s|--status"
+
+# This string lists all other dpkg actions that operate on the names of
+# packages.
+dpkg_pkg_actions="-L|--listfiles|-s|--status|-l|--list"
+
+# Now the command that puts it all together..
+compctl -k dpkg_options \
+ -x "C[-1,$dpkg_deb_rec_actions],R[-R|--recursive,]" -g '*(-/D)' \
+ - "C[-1,$dpkg_deb_actions]" -g '*.deb' + -g '*(-/D)' \
+ - "C[-1,$dpkg_pkg_pending_actions]" -K DpkgPackages + -k "(-a,--pending)" \
+ - "C[-1,$dpkg_pkg_actions]" -K DpkgPackages \
+ - "C[-1,$dpkg_file_actions],C[-2,$dpkg_df_actions]" -f \
+ - "C[-2,$dpkg_dir2_actions],C[-1,$dpkg_df_actions]" -g '*(-/D)' \
+ -- dpkg
+
+# Also, set up package name completion for bug program.
+compctl -K DpkgPackages bug
+
+# This section by Karl M. Hegbloom
+
+dpkg_source_options=(-x -b -c -l -F -V -T -D -U \
+-sa -sk -sp -su -sr -ss -sn -sA -sK -sP -sU -sR \
+-h --help)
+
+compctl -k dpkg_source_options \
+ -x "C[-1,-x]" -g '*.dsc' \
+ - "C[-1,-b]" -g '*(-/D)' \
+ -- dpkg-source
+
+# Unset the temporary variables.
+unset dpkg_deb_actions dpkg_deb_rec_actions dpkg_df_actions \
+ dpkg_dir2_actions dpkg_file_actions dpkg_pkg_pending_actions \
+ dpkg_pkg_actions # dpkg_source_options dpkg_options
+
+#############################################################################