From 683c2cc1ca6877a74b91c869e24642fdc4eb5ab3 Mon Sep 17 00:00:00 2001 From: dana Date: Mon, 25 Mar 2019 16:19:00 -0500 Subject: 44160 (tweaked): Completion: Add _deb_files, match *.ddeb Add new helper function for generating Debian package/control files, use it where applicable Adjusted only for minor white-space corruption in original patch --- Completion/Debian/Command/_apt | 2 +- Completion/Debian/Command/_apt-file | 2 +- Completion/Debian/Command/_debdiff | 6 +++--- Completion/Debian/Command/_dpkg | 20 ++++++++++---------- Completion/Debian/Command/_lintian | 2 +- Completion/Debian/Command/_piuparts | 2 +- Completion/Debian/Type/_deb_files | 17 +++++++++++++++++ 7 files changed, 34 insertions(+), 17 deletions(-) create mode 100644 Completion/Debian/Type/_deb_files (limited to 'Completion/Debian') diff --git a/Completion/Debian/Command/_apt b/Completion/Debian/Command/_apt index dd837379c..4486aa26d 100644 --- a/Completion/Debian/Command/_apt +++ b/Completion/Debian/Command/_apt @@ -411,7 +411,7 @@ _apt-cmd () { /$'(install|download|source|build-dep)\0'/ -'subcmd=${match%?}' \ /$'[^\0]#\0'/ ':packages::_deb_packages -qr "\n\t\- /=" "$expl_packages[@]" avail' \# \ \( \ - // '%(.|)/%' -'[[ $subcmd = install ]]' /'[]'/ ':files:package file:_files -g "*.(changes|deb|dsc)(-.)"' \| \ + // '%(.|)/%' -'[[ $subcmd = install ]]' /'[]'/ ':files: :_deb_files -c' \| \ /$'[^\0/=]#\/'/ /'[]'/ ':apt-releases:release name:_apt_releases' \| \ /$'[^\0/=]#='/ /'[]'/ ':apt-package-versions:package version:_apt_versions_of_binary_package' \| \ \) \ diff --git a/Completion/Debian/Command/_apt-file b/Completion/Debian/Command/_apt-file index 98a93fdd3..5b24707d2 100644 --- a/Completion/Debian/Command/_apt-file +++ b/Completion/Debian/Command/_apt-file @@ -36,7 +36,7 @@ case $state in case $line[1] in search|find) if (( $#opt_args[(I)(-D|--from-deb)] )); then - _wanted files expl 'debian package' _files -g '*.deb(-.)' + _deb_files elif (( $#opt_args[(I)(-f|--from-file)] )); then _files else diff --git a/Completion/Debian/Command/_debdiff b/Completion/Debian/Command/_debdiff index 6f8519a4a..9e8ffd594 100644 --- a/Completion/Debian/Command/_debdiff +++ b/Completion/Debian/Command/_debdiff @@ -17,6 +17,6 @@ _arguments \ '(-h --help)'{-h,--help}'[show help]' \ '(-v --version)'{-v,--version}'[show version]' \ '(-q --quiet)'{-q,--quiet}'[be quiet if no differences]' \ - '--from:debs:_files -g "*.deb(-.)"' \ - '--to:debs:_files -g "*.deb(-.)"' \ - '*:file to compare:_files -g "*.(deb|changes|dsc)(-.)"' + '--from: :_deb_files' \ + '--to: :_deb_files' \ + '*:file to compare:_deb_files -c' diff --git a/Completion/Debian/Command/_dpkg b/Completion/Debian/Command/_dpkg index 5c8f17f03..3477e6116 100644 --- a/Completion/Debian/Command/_dpkg +++ b/Completion/Debian/Command/_dpkg @@ -18,13 +18,13 @@ _dpkg_deb_only_actions=( _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(-.)"' + '(--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=( @@ -35,7 +35,7 @@ _dpkg_common_actions=( _dpkg_actions=( '(--install -i)'{--install,-i}'[install packages]:*:Debian packages:->install' - '--unpack[unpack package]:Debian package:_files -g "*.deb(-.)"' + '--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' @@ -76,7 +76,7 @@ _dpkg_options=( _dpkg_options_recursive=( '(--recursive -R)'{--recursive,-R}'[recursive]' ) _dpkg_deb_and_query_only_actions=( - '(--show -W)'{--show,-W}'[show package info]:Debian package:_files -g \*.u\#deb\(-.\)' + '(--show -W)'{--show,-W}'[show package info]: :_deb_files' ) _dpkg_deb_and_query_only_options=( @@ -147,7 +147,7 @@ case "$state" in "$_dpkg_options_recursive[@]" \ '*:directory:_path_files -/' \ - nonrecur \ - '*:Debian package:_path_files -g "*.deb(-.)"' + '*: :_deb_files' ;; remove|status|listfiles) _call_function ret _dpkg_$state && return ret diff --git a/Completion/Debian/Command/_lintian b/Completion/Debian/Command/_lintian index d60acc9ed..71e71ee3d 100644 --- a/Completion/Debian/Command/_lintian +++ b/Completion/Debian/Command/_lintian @@ -38,7 +38,7 @@ case "$service" in '(-s --source)'{-s,--source}'[the following packages are source]' \ '--udeb[the following packages are udebs]' \ '(-p --packages-file)'{-p,--packages-file}'[process packages listed in file]:list:_files' \ - '*:package:_files -g "*.(changes|deb|dsc)(-.)"' && return 0 + '*: :_deb_files -c' && return 0 ;; (lintian-info) diff --git a/Completion/Debian/Command/_piuparts b/Completion/Debian/Command/_piuparts index a1b6666a3..1da0e85e9 100644 --- a/Completion/Debian/Command/_piuparts +++ b/Completion/Debian/Command/_piuparts @@ -24,7 +24,7 @@ case "$state" in if (( $+opt_args[-a] )); then _deb_packages avail else - _files -g '*.deb(-.)' + _deb_files fi ;; esac diff --git a/Completion/Debian/Type/_deb_files b/Completion/Debian/Type/_deb_files new file mode 100644 index 000000000..e84871cc4 --- /dev/null +++ b/Completion/Debian/Type/_deb_files @@ -0,0 +1,17 @@ +#autoload + +# This function is used to generate file names for Debian package files (.deb +# and friends). In addition to the options supported by _files, it understands +# the following: +# +# -c Include .changes and .dsc files + +local -a _expl _fopts _c _exts=( deb ddeb udeb ) + +zparseopts -a _fopts -D -E - \ + c=_c 1 2 F+: J+: M+: n P+: q r+: R+: S+: V+: W+: X+: + +(( $#_c )) && _exts+=( changes dsc ) + +_description files _expl 'Debian package' +_files "${(@)_fopts}" "${(@)_expl}" -g "*.(${(j<|>)_exts})(-.)" -- cgit 1.4.1