mirror of
https://github.com/systemd/systemd.git
synced 2026-08-09 17:38:42 +00:00
93 lines
4.0 KiB
Plaintext
93 lines
4.0 KiB
Plaintext
#compdef systemd-sysupdate
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
local context state state_descr line
|
|
typeset -A opt_args
|
|
local ret=1
|
|
|
|
# Pick the component/feature names out of the --json=short output of the
|
|
# 'components'/'features' verbs. (The tabular output is unsuitable here, since
|
|
# it prefixes each name with enabled/suggested checkmark columns.)
|
|
_systemd-sysupdate_components() {
|
|
local expl
|
|
local -a components=( ${(@)${(@)${(s:,:)${${"$(_call_program -l components systemd-sysupdate --no-pager --json=short components 2>/dev/null)"#*\"components\":\[}%%\]*}}#\"}%\"} )
|
|
_wanted components expl "component" compadd "$@" -a - components
|
|
}
|
|
|
|
_systemd-sysupdate_features() {
|
|
local expl
|
|
local -a features=( ${(@)${(@)${(s:,:)${${"$(_call_program -l features systemd-sysupdate --no-pager --json=short features 2>/dev/null)"#*\"features\":\[}%%\]*}}#\"}%\"} )
|
|
_wanted features expl "feature" compadd "$@" -a - features
|
|
}
|
|
|
|
local -a opts=(
|
|
{-h,--help}'[Show help message and exit]'
|
|
'--version[Show package version and exit]'
|
|
'--no-pager[Do not pipe output into a pager]'
|
|
'--no-legend[Do not show the headers and footers]'
|
|
'--json=[Show output as JSON]:mode:(pretty short off)'
|
|
'(-A --component-all -S --component-suggested)'{-C+,--component=}'[Select component to update]:component:_systemd-sysupdate_components'
|
|
'(-C --component -S --component-suggested)'{-A,--component-all}'[Select all components]'
|
|
'(-C --component -A --component-all)'{-S,--component-suggested}'[Select all suggested components]'
|
|
'(-s --feature-suggested)'{-a,--feature-all}'[Select all features]'
|
|
'(-a --feature-all)'{-s,--feature-suggested}'[Select all suggested features]'
|
|
'--definitions=[Find transfer definitions in specified directory]:directory:_directories'
|
|
'--root=[Operate on an alternate filesystem root]:directory:_directories'
|
|
'--image=[Operate on disk image as filesystem root]:image file:_files'
|
|
'--image-policy=[Specify disk image dissection policy]:policy'
|
|
'--transfer-source=[Specify the directory to transfer sources from]:directory:_directories'
|
|
{-m+,--instances-max=}'[How many instances to maintain]:number'
|
|
'--sync=[Control whether to sync data to disk]:bool:(yes no)'
|
|
'--verify=[Force signature verification on or off]:bool:(yes no)'
|
|
'--reboot[Reboot after updating to newer version]'
|
|
'--offline[Do not fetch metadata from the network]'
|
|
'--cleanup=[Clean up orphaned files after completing update]:bool:(yes no)'
|
|
)
|
|
|
|
local -a commands=(
|
|
'list:List available and installed versions'
|
|
'features:List optional features'
|
|
'enable-feature:Enable optional features'
|
|
'disable-feature:Disable optional features'
|
|
'check-new:Check if a newer version is available'
|
|
'update:Install newest version'
|
|
'acquire:Download newest version without installing'
|
|
'vacuum:Make room by deleting old versions'
|
|
'cleanup:Clean up orphaned files'
|
|
'pending:Report whether a newer version is installed than booted'
|
|
'reboot:Reboot if a newer version is installed than booted'
|
|
'components:Show list of components'
|
|
'enable-component:Enable components'
|
|
'disable-component:Disable components'
|
|
)
|
|
|
|
_arguments -s -A '-*' \
|
|
"$opts[@]" \
|
|
':command:->command' \
|
|
'*:: :->argument' && ret=0
|
|
|
|
case $state in
|
|
command)
|
|
_describe -t commands 'systemd-sysupdate command' commands && ret=0
|
|
;;
|
|
argument)
|
|
local curcontext=${curcontext%:*:*}:systemd-sysupdate-$words[1]:
|
|
case $words[1] in
|
|
features)
|
|
_arguments -s "$opts[@]" ':feature:_systemd-sysupdate_features' && ret=0
|
|
;;
|
|
enable-feature|disable-feature)
|
|
_arguments -s "$opts[@]" '*:feature:_systemd-sysupdate_features' && ret=0
|
|
;;
|
|
enable-component|disable-component)
|
|
_arguments -s "$opts[@]" '*:component:_systemd-sysupdate_components' && ret=0
|
|
;;
|
|
*)
|
|
_arguments -s "$opts[@]" && ret=0
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
return ret
|