mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-12-05 01:10:17 +00:00
54117: update apt completion
thanks to dana or the many tweaks.
* fix: apt-config shell options + add missing options
* new: satisy, autoremove, autpurge, --allow-downgrades,
--allow-remove-essential,--allow-change-held-packages, --with-new-pkgs,
indextargets, --snapshot/-S
* snapshot lookup via mr/time^Wrewritten by dana to use zsh/datetime
* edit-sources file lookup for .list & .sources
This commit is contained in:
committed by
Oliver Kiddle
parent
fb1edae58f
commit
4a99cc2669
@@ -1,5 +1,7 @@
|
||||
2025-11-30 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* Christopher Bock: 54117: update apt completion
|
||||
|
||||
* 54119: Src/Zle/termquery.c: fix OSC52 clipboard get with
|
||||
empty clipboard
|
||||
|
||||
|
||||
@@ -398,6 +398,7 @@ _apt-cmd () {
|
||||
-c,--config-file:configfile \
|
||||
-o,--option:arbitem \
|
||||
-t,--target-release:release \
|
||||
-S,--snapshot:_apt_snapshot_dates \
|
||||
-- \
|
||||
/$'list\0'/ \( \
|
||||
\( \
|
||||
@@ -412,12 +413,14 @@ _apt-cmd () {
|
||||
/$'depends\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
|
||||
/$'rdepends\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
|
||||
/$'policy\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
|
||||
/$'(source|build-dep)\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" source' \# \| \
|
||||
/$'update\0'/ \| \
|
||||
\( \
|
||||
/$'(install|download|source|build-dep)\0'/ -'subcmd=${match%?}' \
|
||||
/$'[^\0]#\0'/ ':packages::_deb_packages -qr "\n\t\- /=+-" "$expl_packages[@]" avail' \# \
|
||||
\( \
|
||||
// '%(.|)/%' -'[[ $subcmd = install ]]' /'[]'/ ':files: :_deb_files -c' \| \
|
||||
// '%(.|)/%' -'[[ $subcmd = install ]]' /'[]'/ ':files: :_deb_files' \| \
|
||||
// '%(.|)/%' -'[[ $subcmd = build-dep ]]' /'[]'/ ':files: :_deb_files -D' \| \
|
||||
/$'[^\0/=]#\/'/ /'[]'/ ':apt-releases:release name:_apt_releases' \| \
|
||||
/$'[^\0/=]#='/ /'[]'/ ':apt-package-versions:package version:_apt_versions_of_binary_package' \| \
|
||||
\) \
|
||||
@@ -426,11 +429,12 @@ _apt-cmd () {
|
||||
/$'why\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \| \
|
||||
/$'upgrade\0'/ \| \
|
||||
/$'autoclean\0'/ \| \
|
||||
/$'distclean\0'/ \| \
|
||||
/$'changelog\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
|
||||
/$'why-not\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \| \
|
||||
/$'full-upgrade\0'/ \| \
|
||||
/$'dist-upgrade\0'/ \| \
|
||||
/$'edit-sources\0'/ \| \
|
||||
/$'edit-sources\0'/ /$'[^\0]#\0'/ ': ::_apt_sources' \# \| \
|
||||
/"[]"/ ':argument-1::compadd "$expl_action[@]" list search showsrc show depends rdepends policy update install reinstall download source build-dep remove upgrade full-upgrade dist-upgrade edit-sources autoclean changelog autopurge autoremove purge why why-not'
|
||||
|
||||
_apt-cmd () {
|
||||
@@ -460,7 +464,12 @@ _apt-get () {
|
||||
--no-download:bool \
|
||||
--no-install-recommends:bool \
|
||||
--ignore-hold:bool \
|
||||
--with-new-pkgs:bool \
|
||||
--no-upgrade:bool \
|
||||
--only-upgrade:bool \
|
||||
--allow-downgrades:bool \
|
||||
--allow-remove-essential:bool \
|
||||
--allow-change-held-packages:bool \
|
||||
--force-yes:bool \
|
||||
--print-uris:bool \
|
||||
--purge:bool \
|
||||
@@ -477,27 +486,37 @@ _apt-get () {
|
||||
--arch-only:bool \
|
||||
--allow-unauthenticated:bool \
|
||||
--auto-remove:bool \
|
||||
-S,--snapshot:_apt_snapshot_dates \
|
||||
-- \
|
||||
/$'update\0'/ \| \
|
||||
/$'upgrade\0'/ \| \
|
||||
\( \
|
||||
/$'install\0'\|$'download\0'\|$'source\0'\|$'build-dep\0'/ \
|
||||
/$'[^\0]#\0'/ ':packages::_deb_packages -qr "\n\t\- /=" "$expl_packages[@]" avail' \# \
|
||||
/$'(source|build-dep)\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" source' \# \| \
|
||||
/$'(install|download|source|build-dep)\0'/ -'subcmd=${match%?}' \
|
||||
/$'[^\0]#\0'/ ':packages::_deb_packages -qr "\n\t\- /=+-" "$expl_packages[@]" avail' \# \
|
||||
\( \
|
||||
/$'[^\0/=]#/'/ /'[]'/ ':apt-releases:release name:_apt_releases' \| \
|
||||
/$'[^\0/=]#='/ /'[]'/ ':apt-package-versions:package version:_apt_versions_of_binary_package' \
|
||||
// '%(.|)/%' -'[[ $subcmd = install ]]' /'[]'/ ':files: :_deb_files' \| \
|
||||
// '%(.|)/%' -'[[ $subcmd = build-dep ]]' /'[]'/ ':files: :_deb_files -D' \| \
|
||||
/$'[^\0/=]#\/'/ /'[]'/ ':apt-releases:release name:_apt_releases' \| \
|
||||
/$'[^\0/=]#='/ /'[]'/ ':apt-package-versions:package version:_apt_versions_of_binary_package' \| \
|
||||
\) \
|
||||
\) \| \
|
||||
/$'(|auto)(purge|remove)\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \# \| \
|
||||
/$'dist-upgrade\0'/ \| \
|
||||
/$'dselect-upgrade\0'/ \| \
|
||||
/$'clean\0'/ \| \
|
||||
/$'clean\0'/ \| \
|
||||
/$'autoclean\0'/ \| \
|
||||
/$'indextargets\0'/ \| \
|
||||
/$'distclean\0'/ \| \
|
||||
/$'changelog\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" avail' \# \| \
|
||||
/$'check\0'/ \| \
|
||||
/$'help\0/' \| \
|
||||
/$'(|un)markauto\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \# \| \
|
||||
/"[]"/ ':argument-1::compadd "$expl_action[@]" update upgrade install remove purge dist-upgrade dselect-upgrade clean autoclean changelog check source build-dep autopurge autoremove help markauto unmarkauto download'
|
||||
/$'autoremove\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \# \| \
|
||||
/$'autopurge\0'/ /$'[^\0]#\0'/ ':packages::_deb_packages "$expl_packages[@]" installed' \# \| \
|
||||
/$'help\0/' \| \
|
||||
/"[]"/ ':argument-1::compadd "$expl_action[@]" update upgrade install reinstall remove purge dist-upgrade dselect-upgrade clean autoclean distclean changelog check source build-dep satisfy indextargets autoremove autopurge help markauto unmarkauto download'
|
||||
|
||||
_apt-get () {
|
||||
local expl_action expl_packages
|
||||
@@ -591,15 +610,19 @@ _apt-cdrom () {
|
||||
|
||||
_apt-config () {
|
||||
_apt_arguments _apt-config \
|
||||
--empty:bool \
|
||||
--format:arbitem \
|
||||
-h,--help:bool \
|
||||
-v,--version:bool \
|
||||
--audit:bool \
|
||||
-c,--config-file:configfile \
|
||||
-o,--option:arbitem \
|
||||
--color:bool \
|
||||
-- \
|
||||
/$'shell\0'/ \
|
||||
\( \
|
||||
/$'[^\0]#\0'/ ':parameters:shell variable to assign:_parameters' \
|
||||
/$'[^\0]#\0'/ ':values:configuration key:compadd - ${${(f)"$(apt-config dump 2>&1)"}% *}' \
|
||||
/$'[^\0]#\0'/ ':values:configuration key:compadd - ${(u)${(f)"$(apt-config --empty --no-color --format='%f%n' dump 2>&1)"}%%(::|) *}' \
|
||||
\) \# \| \
|
||||
/$'dump\0'/ \| \
|
||||
/"[]"/ ':argument-1:action:compadd shell dump'
|
||||
@@ -621,6 +644,17 @@ ${${${${(M)tmp:#*release*n=*}#*n=}%%,*}:#now}
|
||||
fi
|
||||
}
|
||||
|
||||
_apt_sources () {
|
||||
local diretc=etc/apt sourceparts=sources.list.d
|
||||
local -a expl
|
||||
|
||||
eval "$(apt-config shell diretc dir::etc 2> /dev/null)"
|
||||
eval "$(apt-config shell sourceparts dir::etc::sourceparts 2> /dev/null)"
|
||||
|
||||
_description files expl 'source file'
|
||||
_files "${(@)expl}" -W /$diretc/$sourceparts -g '*.(list|sources)(.:t)'
|
||||
}
|
||||
|
||||
_apt_releases () {
|
||||
local update_policy
|
||||
|
||||
@@ -710,4 +744,18 @@ _apt-mark () {
|
||||
_apt-mark "$@"
|
||||
}
|
||||
|
||||
_apt_snapshot_dates() {
|
||||
local -a expl dates
|
||||
# Get last 6 months of dates
|
||||
zmodload -i zsh/datetime && {
|
||||
local i date last=$EPOCHSECONDS
|
||||
for (( i = 0; i < 180; i++ )); do
|
||||
strftime -s date %Y%m%d $last
|
||||
dates+=( $date )
|
||||
last=$(( last - (24 * 60 * 60) ))
|
||||
done
|
||||
}
|
||||
_wanted list expl 'wayback date (yyyymmdd[ThhmmssZ])' compadd -- $dates
|
||||
}
|
||||
|
||||
_apt "$@"
|
||||
|
||||
Reference in New Issue
Block a user