summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Bock <christopher@bocki.com>2025-04-12 13:20:15 +0200
committerOliver Kiddle <opk@zsh.org>2025-10-23 23:04:53 +0200
commit044267cecb0e44eab578dd091289cae9e8b963ff (patch)
tree21908fe8b72b48bd8679521946f999283a888ffe
parentgithub #147: Clean up some leaked variables in completion functions (diff)
downloadzsh-044267cecb0e44eab578dd091289cae9e8b963ff.tar
zsh-044267cecb0e44eab578dd091289cae9e8b963ff.tar.gz
zsh-044267cecb0e44eab578dd091289cae9e8b963ff.tar.bz2
zsh-044267cecb0e44eab578dd091289cae9e8b963ff.tar.lz
zsh-044267cecb0e44eab578dd091289cae9e8b963ff.tar.xz
zsh-044267cecb0e44eab578dd091289cae9e8b963ff.tar.zst
zsh-044267cecb0e44eab578dd091289cae9e8b963ff.zip
github #131: add missing options
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Debian/Command/_dpkg37
-rw-r--r--Completion/Debian/Command/_madison7
-rw-r--r--Completion/Debian/Command/_schroot16
-rw-r--r--Completion/Debian/Type/_deb_files6
-rw-r--r--Completion/Unix/Command/_libvirt4
-rw-r--r--Completion/Unix/Command/_smartmontools14
7 files changed, 65 insertions, 25 deletions
diff --git a/ChangeLog b/ChangeLog
index 166442b6d..e360647a2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2025-10-23 Oliver Kiddle <opk@zsh.org>
+ * Christopher Bock: github #131 (with tweaks by dana):
+ Completion/Debian/Command/_dpkg, Completion/Debian/Command/_schroot,
+ Completion/Unix/Command/_libvirt, Completion/Debian/Type/_deb_files,
+ Completion/Debian/Command/_madison,
+ Completion/Unix/Command/_smartmontools: add missing options
+
* Kevin Cox: github #147: Completion/Unix/Command/_git,
Completion/Unix/Command/_ssh, Completion/Unix/Type/_hosts:
Clean up some leaked variables in completion functions
diff --git a/Completion/Debian/Command/_dpkg b/Completion/Debian/Command/_dpkg
index 617644993..9a719391c 100644
--- a/Completion/Debian/Command/_dpkg
+++ b/Completion/Debian/Command/_dpkg
@@ -19,12 +19,14 @@ _dpkg_deb_only_actions=(
_dpkg_deb_actions=(
'(--build -b)'{--build,-b}'[build archive]:directory:_files -/'
'(--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'
+ '(--raw-extract -R)'{--raw-extract,-R}'[extract files and control]: :_deb_files'
+ '(--field -f)'{--field,-f}'[show fields]: :_deb_files'
'--fsys-tarfile[output fs tarfile]: :_deb_files'
+ '--ctrl-tarfile[output ctrl tarfile]: :_deb_files'
+ '(--info -I)'{--info,-I}'[show info]: :_deb_files'
)
_dpkg_common_actions=(
@@ -39,36 +41,43 @@ _dpkg_actions=(
'--configure[reconfigure specified packages]:*:package:->configure'
'(--remove -r)'{--remove,-r}'[remove package]:*:package:->remove'
'(--purge -P)'{--purge,-P}'[purge package]:*:package:->purge'
+ '(--verify -V)'{--verify,-V}'[verify package]:*:package:->verify'
+ '(--audit -C)'{--audit,-C}'[check for broken packages]'
'--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]'
- '(--audit -C)'{--audit,-C}'[check for broken pkgs]'
'--get-selections[get selections]:pattern:'
'--set-selections[set selections]'
+ '--clear-selections[clear selections]'
'--yet-to-unpack[list uninstalled]'
- '--print-architecture[print target architecture]'
- '--print-installation-architecture'
- '--print-foreign-architectures[print list of extra architectures]'
+ '--predep-package[predep package]'
'--add-architecture[add extra architecture]:architecture:->add_architecture'
'--remove-architecture[remove extra architecture]:architecture:->remove_architecture'
+ '--print-architecture[print target architecture]'
+ '--print-foreign-architectures[print list of extra architectures]'
+ '--assert--[assert feature]:what:(help support-predepends working-epoch long-filenames multi-conrep multi-arch versioned-provides protected-field)'
+ '--validate--[validate thing]:what:(pkgname trigname archname version)'
'--compare-versions[compare version numbers]:*::expression:= ->compare_versions'
)
_dpkg_options=(
'--abort-after[abort after errors]:number of errors:'
- '--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]'
'--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)'
+ --{force,refuse,no-force}'--[forcing options]:what:(all downgrade configure-any hold remove-reinstreq remove-protected remove-essential depends depends-version breaks conflicts confmiss confnew confold confdef confask overwrite overwrite-dir overwrite-diverted statoverride-add statoverride-remove security-mac unsafe-io script-chrootless architecture bad-version bad-path not-root bad-verify)'
'--ignore-depends=[ignore depends involving package]:package:_deb_packages avail'
- --{force,refuse,no-force}'--[forcing options]:what:(all downgrade configure-any hold bad-path not-root overwrite overwrite-diverted bad-verify depends-version depends confnew confold confdef confmiss conflicts architecture overwrite-dir remove-reinstreq remove-essential help)'
+ '--no-act[show potential actions but do not follow through]'
+ '--dry-run[show potential actions but do not follow through]'
+ '--simulate[show potential actions but do not follow through]'
+ '--instdir=[change inst root but not data dir]:_files -/'
+ '--root=[alternative root]:root:_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]'
)
_dpkg_options_recursive=( '(--recursive -R)'{--recursive,-R}'[recursive]' )
@@ -82,11 +91,11 @@ _dpkg_deb_and_query_only_options=(
)
_dpkg_query_actions=(
+ '(--list -l)'{--list,-l}'[list packages]:*:packages:->list'
'(--status -s)'{--status,-s}'[display package status]:*:packages:->status'
- '(--print-avail -p)'{--print-avail,-p}'[display available details]:packages:_deb_packages avail'
'(--listfiles -L)'{--listfiles,-L}'[list owned files]:*:packages:->listfiles'
- '(--list -l)'{--list,-l}'[list packages]:*:packages:->list'
'(--search -S)'{--search,-S}'[search for file owner]:*:pattern:->search'
+ '(--print-avail -p)'{--print-avail,-p}'[display available details]:packages:_deb_packages avail'
'--admindir=[data directory]:directory:_files -/'
)
@@ -147,7 +156,7 @@ case "$state" in
- nonrecur \
'*: :_deb_files'
;;
- remove|status|listfiles)
+ remove|status|listfiles|verify)
_call_function ret _dpkg_$state && return ret
_arguments -C -A "-*" -s "$_dpkg_options[@]" \
'*:package:_deb_packages installed'
diff --git a/Completion/Debian/Command/_madison b/Completion/Debian/Command/_madison
index dfdf1b438..b5f53c14e 100644
--- a/Completion/Debian/Command/_madison
+++ b/Completion/Debian/Command/_madison
@@ -3,12 +3,15 @@
_arguments \
'(-a --architecture)'{-a,--architecture=}':arch:_sequence _deb_architectures -a "all source" -' \
'(-b --binary)'{-b,--binary-type=}':type:(deb udeb)' \
- '(-c --component)'{-c,--component=}':component:_values -s , "component list" main contrib non-free' \
+ '(-c --component)'{-c,--component=}':component:_values -s , "component list" main contrib non-free non-free-firmware' \
'(-g --greaterorequal)'{-g,--greaterorequal} \
'(-G --greaterthan)'{-G,--greaterthan} \
'(-h --help)'{-h,--help} \
+ '(-s --suite)'{-s,--suite=}':suite:_values -s , "suite list" stable testing unstable oldstable oldoldstable' \
'(-r --regex)'{-r,--regex} \
- '(-s --suite)'{-s,--suite=}':suite:_values -s , "suite list" oldstable stable testing unstable' \
'(-S --source-and-binary)'{-S,--source-and-binary} \
+ '(-u --url)'{-u,--url=}':url:_values -s , "url alias" debian new qa ubuntu all udd archive ports' \
+ '--version' \
+ '(--no-conf --noconf)'{--no-conf,--noconf} \
'*:package:_deb_packages avail'
diff --git a/Completion/Debian/Command/_schroot b/Completion/Debian/Command/_schroot
index 117df45ef..e073f692c 100644
--- a/Completion/Debian/Command/_schroot
+++ b/Completion/Debian/Command/_schroot
@@ -9,19 +9,25 @@ _arguments -S \
'(-a --all)'{-a,--all}'[select all chroots and active sessions]' \
'--all-chroots[select all chroots]' \
'--all-sessions[select all active sessions]' \
- '*'{-c,--chroot=}'[use specified chroot]:chroot:->chroot' \
- '(-d --directory)'{-d,--directory=}'[directory to use]:dir:_files -W / -P /' \
- '(-u --user)'{-u,--user=}'[username (default current user)]:user:_users' \
+ '--all-source-chroots[select all source chroots]' \
+ '--exclude-aliases[do not include aliases]' \
+ '*'{-c+,--chroot=}'[use specified chroot]:chroot:->chroot' \
+ '(-d --directory)'{-d+,--directory=}'[directory to use]:dir:_files -W / -P /' \
+ '(-u --user)'{-u+,--user=}'[username (default current user)]:user:_users' \
+ '(-s --shell)'{-s+,--shell=}'[shell to use as login shell]:shell:->shells' \
'(-l --list)'{-l,--list}'[list available chroots]' \
'(-i --info)'{-i,--info}'[show information about selected chroots]' \
'--location[print location of selected chroots]' \
'--config[dump configuration of selected chroots]' \
'(-p --preserve-environment)'{-p,--preserve-environment}'[preserve user environment]' \
+ '(-o --option)'{-o+,--option=}'[set option]:option key=value' \
'(-q --quiet)'{-q,--quiet}'[quiet]' \
'(-v --verbose)'{-v,--verbose}'[verbose]' \
'(-V --version)'{-V,--version}'[version]' \
+ '--automatic-session[begin, run and end a session automatically]' \
'(-b --begin-session)'{-b,--begin-session}'[begin a session; returns a session ID]' \
'(-r --run-session)'{-r,--run-session}'[run an existing session]' \
+ '(-n --session-name)'{-n+,--session-name=}'[session name]:session name' \
'--recover-session[recover an existing session]' \
'(-e --end-session)'{-e,--end-session}'[end an existing session]' \
'(-f --force)'{-f,--force}'[force operation]' \
@@ -33,4 +39,8 @@ case "$state" in
_wanted tag expl 'chroot' \
compadd $(schroot -l -a)
;;
+ (shells)
+ _wanted -C $context shells expl shell compadd ${(f)^"$(</etc/shells)"}(N)
+ return
+ ;;
esac
diff --git a/Completion/Debian/Type/_deb_files b/Completion/Debian/Type/_deb_files
index e84871cc4..7102ade21 100644
--- a/Completion/Debian/Type/_deb_files
+++ b/Completion/Debian/Type/_deb_files
@@ -5,13 +5,15 @@
# the following:
#
# -c Include .changes and .dsc files
+# -D Only .dsc files (e.g. apt-get build-dep ./foo.dsc)
-local -a _expl _fopts _c _exts=( deb ddeb udeb )
+local -a _expl _fopts _c _D _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=_c D=_D 1 2 F+: J+: M+: n P+: q r+: R+: S+: V+: W+: X+:
(( $#_c )) && _exts+=( changes dsc )
+(( $#_D )) && _exts+=( dsc )
_description files _expl 'Debian package'
_files "${(@)_fopts}" "${(@)_expl}" -g "*.(${(j<|>)_exts})(-.)"
diff --git a/Completion/Unix/Command/_libvirt b/Completion/Unix/Command/_libvirt
index bd605b9c9..9c10f71e8 100644
--- a/Completion/Unix/Command/_libvirt
+++ b/Completion/Unix/Command/_libvirt
@@ -18,7 +18,7 @@ interact_cmds=(cd echo exit quit connect)
typeset -A dom_opts
dom_opts=(
- console " "
+ console --state-running
destroy " "
managedsave " "
reboot " "
@@ -197,7 +197,7 @@ case $state in
return 1
fi
# Allow passing domain without --domain with few of the most used commands
- if [[ $cmd == (destroy|edit|reboot|reset|start|shutdown) ]]; then
+ if [[ $cmd == (destroy|edit|reboot|reset|start|shutdown|console|guestinfo) ]]; then
if [[ $words[CURRENT-1] == $cmd ]]; then
values=( $(_call_program domains "noglob virsh $conn_opt list ${dom_opts[$cmd]:-"--all"} --name") )
[[ -n $values ]] && _wanted domains expl domain compadd ${=values} && return 0
diff --git a/Completion/Unix/Command/_smartmontools b/Completion/Unix/Command/_smartmontools
index fe6496664..71454cf08 100644
--- a/Completion/Unix/Command/_smartmontools
+++ b/Completion/Unix/Command/_smartmontools
@@ -9,13 +9,23 @@ _arguments -s -S \
"w[print all words]"
"(b v)n[suppress printing bits]"
"(b n)v[print all bits from valid words]"' \
+ '(--json)-j[output as JSON]' \
+ '(-j)--json=-[specify JSON/YAML output format]:: : _values -S "" "output format"
+ "c[compact]"
+ "g[grep/gron]"
+ "o[original]"
+ "s[sorted]"
+ "v[verbose]"
+ "y[YAML]"
+ "i[implemented dev]"
+ "u[unimplemented dev]"' \
'(H)*'{-g+,--get=}'[get device setting]:setting:(all aam apm lookahead security wcache rcache wcreorder)' \
'(H -a --all -x --xall -H --health -i --info -c --capabilities -A --attributes --scan --scan-open)'{-a,--all}'[show all SMART information for device]' \
'(H -x --xall -a --all -H --health -i --info -c --capabilities -A --attributes --scan --scan-open)'{-x,--xall}'[show all information for device]' \
'(H 1 --scan-open --identify -x --xall -a --all -H --health -i --info -c --capabilities -A --attributes)--scan[scan for devices]' \
'(H 1 --scan --identify -x --xall -a --all -H --health -i --info -c --capabilities -A --attributes)--scan-open[scan for devices and try to open each device]' \
'(H -q --quietmode)'{-q+,--quietmode=}'[set smartctl quiet mode]:quiet mode:(errorsonly silent noserial)' \
- '(H -d --device)'{-d+,--device=}'[specify device type]:device type:(ata scsi nvme sat usbcypress usbjmicron usbprolific usbsunplus marvell areca 3ware hpt megaraid cciss auto test)' \
+ '(H -d --device)'{-d+,--device=}'[specify device type]:device type:(auto test ata scsi nvme sat usbcypress usbjmicron usbprolific usbsunplus sntasmedia sntjmicron sntrealtek marvell megaraid aacraid 3ware areca cciss hpt sssraid intelliprop jmb39x jms56x)' \
'(H)*'{-T+,--tolerance=}'[specify how tolerant smartctl should be of ATA SMART command failures]:tolerance:(normal conservative permissive verypermissive)' \
'(H -b --badsum)'{-b+,--badsum=}'[set action if checksum error is detected]:action:(warn exit ignore)' \
'(H)*'{-r+,--report=}'[report transactions]:transaction type:(ioctl ataioctl scsiioctl nvmeioctl)' \
@@ -28,7 +38,7 @@ _arguments -s -S \
'(H -c --capabilities)'{-c,--capabilities}'[show device SMART capabilities]' \
'(H -A --attributes)'{-A,--attributes}'[show device SMART vendor-specific attributes and values]' \
'(H)*'{-f+,--format=}'[set output format for attributes]:format:(old brief hex,id hex,val hex)' \
- '(H)*'{-l+,--log=}'[show device log]:log:(error selftest selective directory xerror xselftest background sasphy sataphy scttemp scttempsts scttemphist scttempint scterc devstat ssd gplog smartlog nvmelog)' \
+ '(H)*'{-l+,--log=}'[show device log]:log:(error selftest selective directory xerror xselftest background sasphy sataphy scttemp scttempsts scttemphist scttempint scterc devstat ssd gplog smartlog nvmelog farm)' \
'(H)*'{-v+,--vendorattribute=}'[set display option for vendor attribute]:vendor attribute:->vendorattrs' \
'(H -F --firmwarebug)'{-F+,--firmwarebug=}'[use firmware bug workaround]:bug:(none nologdir samsung samsung2 samsung3 xerrorlba swapid)' \
'(H -P --presets)'{-P+,--presets=}'[specify whether to use drive-specific presets]:preset usage:(use ignore show showall)' \