mirror of
https://github.com/systemd/systemd
synced 2024-07-21 10:17:21 +00:00
shell-completion/zsh: improve and expand machinectl completion
This commit is contained in:
parent
d4c8de21a0
commit
57d389c3fb
|
@ -12,9 +12,9 @@
|
|||
_machines=("${(fo)$(__machinectl_get_images)}")
|
||||
typeset -U _machines
|
||||
if [[ -n "$_machines" ]]; then
|
||||
_describe 'machines' _machines
|
||||
_describe 'images' _machines
|
||||
else
|
||||
_message 'no machines'
|
||||
_message 'no images'
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -42,13 +42,22 @@
|
|||
"list-images:Show available container and VM images"
|
||||
"image-status:Show image details"
|
||||
"show-image:Show properties of image"
|
||||
"edit:Edit settings of one or more VMs/containers"
|
||||
"cat:Show settings of one or more VMs/containers"
|
||||
"clone:Clone an image"
|
||||
"rename:Rename an image"
|
||||
"read-only:Mark or unmark image read-only"
|
||||
"remove:Remove an image"
|
||||
"set-limits:Set image or pool size limit (disk quota)"
|
||||
"clean:Remove hidden (or all) images"
|
||||
|
||||
"pull-tar:Download a TAR container image"
|
||||
"pull-raw:Download a RAW container or VM image"
|
||||
"import-tar:Import a local TAR container image"
|
||||
"import-raw:Import a local RAW container or VM image"
|
||||
"import-fs:Import a local directory container image"
|
||||
"export-tar:Export a TAR container image locally"
|
||||
"export-raw:Export a RAW container or VM image locally"
|
||||
"list-transfers:Show list of downloads in progress"
|
||||
"cancel-transfer:Cancel a download"
|
||||
)
|
||||
|
@ -57,28 +66,98 @@
|
|||
_describe -t commands 'machinectl command' _machinectl_cmds || compadd "$@"
|
||||
else
|
||||
local curcontext="$curcontext"
|
||||
local stop=0
|
||||
cmd="${${_machinectl_cmds[(r)$words[1]:*]%%:*}}"
|
||||
if (( $#cmd )); then
|
||||
if (( CURRENT == 2 )); then
|
||||
case $cmd in
|
||||
list*|cancel-transfer|pull-tar|pull-raw)
|
||||
msg="no options" ;;
|
||||
clone)
|
||||
start|enable|disable)
|
||||
_machinectl_images ;;
|
||||
start)
|
||||
|
||||
status|show|poweroff|reboot|terminate|kill)
|
||||
_sd_machines ;;
|
||||
|
||||
login|shell)
|
||||
if (( CURRENT == 2 )); then _sd_machines
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
copy-to|bind)
|
||||
if (( CURRENT == 2 )); then _sd_machines
|
||||
elif (( CURRENT == 3 )); then _files
|
||||
elif (( CURRENT == 4 )); then _message "path on container"
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
copy-from)
|
||||
if (( CURRENT == 2 )); then _sd_machines
|
||||
elif (( CURRENT == 3 )); then _message "path on container"
|
||||
elif (( CURRENT == 4 )); then _files
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
image-status|show-image|remove)
|
||||
_machinectl_images ;;
|
||||
*)
|
||||
_sd_machines
|
||||
|
||||
edit|cat)
|
||||
if (( CURRENT == 2 )); then _machinectl_images
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
clone|rename)
|
||||
if (( CURRENT == 2 )); then _machinectl_images
|
||||
elif (( CURRENT == 3 )); then _message "target image"
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
read-only)
|
||||
if (( CURRENT == 2 )); then _machinectl_images
|
||||
elif (( CURRENT == 3 )); then _values 'read-only flag' 'true' 'false'
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
set-limit)
|
||||
if (( CURRENT == 2 )); then _machinectl_images
|
||||
elif (( CURRENT == 3 )); then _message "size limit"
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
pull-tar|pull-raw)
|
||||
if (( CURRENT == 2 )); then _message "${cmd#pull-} file URL"
|
||||
elif (( CURRENT == 3 )); then _message "target image"
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
import-tar)
|
||||
if (( CURRENT == 2 )); then _files -g "*.(tar(|.(gz|bz2|xz|zst))|tgz|tbz2|txz|tzst)(.)"
|
||||
elif (( CURRENT == 3 )); then _message "target image"
|
||||
else stop=1
|
||||
fi ;;
|
||||
import-raw)
|
||||
if (( CURRENT == 2 )); then _files -g "*(.)"
|
||||
elif (( CURRENT == 3 )); then _message "target image"
|
||||
else stop=1
|
||||
fi ;;
|
||||
import-fs)
|
||||
if (( CURRENT == 2 )); then _files -/
|
||||
elif (( CURRENT == 3 )); then _message "target image"
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
export-tar|export-raw)
|
||||
if (( CURRENT == 2 )); then _machinectl_images
|
||||
elif (( CURRENT == 3 )); then _files
|
||||
else stop=1
|
||||
fi ;;
|
||||
|
||||
list*|clean|cancel-transfer)
|
||||
stop=1 ;;
|
||||
|
||||
'')
|
||||
stop=1 ;;
|
||||
esac
|
||||
else
|
||||
case $cmd in
|
||||
copy-to|copy-from|bind)
|
||||
_files ;;
|
||||
*) msg="no options"
|
||||
esac
|
||||
fi
|
||||
else
|
||||
|
||||
if (( stop )); then
|
||||
_message "no more options"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue