completions: fix/augment zsh completions for systemd-nspawn, busctl, loginctl, hostnamectl, localectl, machinectl

This commit is contained in:
Daniel Mack 2014-03-25 20:28:31 +01:00
parent 10b17992ee
commit 4433c995c7
7 changed files with 44 additions and 9 deletions

2
TODO
View File

@ -96,8 +96,6 @@ Features:
on screen, not unlike how job control works on the shell
* completions:
- busctl zsh completion is outdated
- systemd-nspawn -Z/-L/-q is missing for zsh
- manager property enumeration was broken when systemd moved to /usr/lib/
* cgroups:

View File

@ -43,12 +43,15 @@ _arguments \
{-h,--help}'[Prints a short help text and exits.]' \
'--version[Prints a short version string and exits.]' \
'--no-pager[Do not pipe output into a pager]' \
'--no-legend[Do not show the headers and footers]' \
'--system[Connect to system manager]' \
'--user[Connect to user service manager]' \
{-H+,--host=}'[Operate on remote host]:userathost:_sd_hosts_or_user_at_host' \
{-M+,--machine=}'[Operate on local container]:machines:_sd_machines' \
'--address=[Connect to the bus specified by address]:address' \
'--no-unique[Only show well-known names]' \
'--no-machine[Do not show machine IDs]' \
'--show-machine[Show machine ID column in list]' \
'--unique[Only show unique names]' \
'--acquired[Only show acquired names]' \
'--activatable[Only show activatable names]' \
'--match=[Only show matching messages]:match' \
'*::busctl command:_busctl_command'

View File

@ -6,6 +6,7 @@ _hostnamectl_command() {
"status:Show current hostname settings"
"set-hostname:Set system hostname"
"set-icon-name:Set icon name for host"
"set-chassis:Set chassis type for host"
)
if (( CURRENT == 1 )); then
_describe -t commands 'hostnamectl commands' _hostnamectl_cmds || compadd "$@"

View File

@ -64,6 +64,10 @@ _localectl_command() {
'set-keymap:Set virtual console keyboard mapping'
'list-keymaps:Show known virtual console keyboard mappings'
'set-x11-keymap:Set X11 keyboard mapping'
'list-x11-keymap-models:Show known X11 keyboard mapping models'
'list-x11-keymap-layouts:Show known X11 keyboard mapping layouts'
'list-x11-keymap-variants:Show known X11 keyboard mapping variants'
'list-x11-keymap-options:Show known X11 keyboard mapping options'
)
if (( CURRENT == 1 )); then
_describe -t commands 'localectl command' _localectl_cmds
@ -85,4 +89,5 @@ _arguments \
'--no-pager[Do not pipe output into a pager]' \
'--no-ask-password[Do not prompt for password]' \
{-H+,--host=}'[Operate on remote host]:userathost:_sd_hosts_or_user_at_host' \
{-M+,--machine=}'[Operate on local container]:machine' \
'*::localectl commands:_localectl_command'

View File

@ -56,6 +56,8 @@ done
"activate:Activate a session"
"lock-session:Screen lock one or more sessions"
"unlock-session:Screen unlock one or more sessions"
"lock-sessions:Screen lock all current sessions"
"unlock-sessions:Screen unlock all current sessions"
"terminate-session:Terminate one or more sessions"
"kill-session:Send signal to processes of a session"
"list-users:List users"
@ -99,8 +101,11 @@ _arguments -s \
{-a,--all}'[Show all properties, including empty ones]' \
'--kill-who=[Who to send signal to]:killwho:(main control all)' \
{-s+,--signal=}'[Which signal to send]:signal:_signals' \
'--no-ask-password[Do not ask for system passwords]' \
{-H+,--host=}'[Operate on remote host]:userathost:_sd_hosts_or_user_at_host' \
{-M+,--machine=}'[Operate on local container]:machine' \
{-P,--privileged}'[Acquire privileges before execution]' \
{-l,--full}'[Do not ellipsize output]' \
'--no-pager[Do not pipe output into a pager]' \
'--no-legend[Do not show the headers and footers]' \
'--no-ask-password[Do not ask for system passwords]' \
'*::loginctl command:_loginctl_command'

View File

@ -7,6 +7,9 @@
"list:List currently running VMs/containers"
"status:Show VM/container status"
"show:Show properties of one or more VMs/containers"
"login:Get a login prompt on a VM/container"
"poweroff:Power off one or more VMs/containers"
"reboot:Reboot one or more VMs/containers"
"terminate:Terminate one or more VMs/containers"
"kill:Send signal to process or a VM/container"
)

View File

@ -13,12 +13,32 @@ _nspawn-caps(){
_arguments \
{-h,--help}'[Show this help]' \
{--directory=,-D+}'[Directory to use as file system root for the namespace container. If omitted the current directory will be used.]:directories:_directories' \
{--boot,-b+}'[Automatically search for an init binary and invoke it instead of a shell or a user supplied program.]' \
{--image=,-i+}'[Disk image to mount the root directory for the container from.]' \
{--boot=,-b+}'[Automatically search for an init binary and invoke it instead of a shell or a user supplied program.]' \
{--user=,-u+}'[Run the command under specified user, create home directory and cd into it.]' \
{--machine=,-M+}'[Sets the machine name for this container.]' \
'--uuid=[Set the specified uuid for the container.]' \
{--controllers=,-C+}'[Makes the container appear in other hierarchies than the name=systemd:/ one. Takes a comma-separated list of controllers.]' \
'--slice=[Make the container part of the specified slice, instead of the default machine.slice.]' \
'--private-network[Turn off networking in the container. This makes all network interfaces unavailable in the container, with the exception of the loopback device.]' \
'--read-only[Mount the root file system read only for the container.]' \
'--private-network[Disconnect networking of the container from the host.]' \
'--network-interface=[Assign the specified network interface to the container.]' \
'--network-macvlan=[Create a "macvlan" interface of the specified Ethernet network interface and add it to the container.]' \
'--network-veth[Create a virtual Ethernet link (veth) between host and container.]' \
'--network-bridge=[Adds the host side of the Ethernet link created with --network-veth to the specified bridge.]' \
{--selinux-context=,-Z+}'[Sets the SELinux security context to be used to label processes in the container.]' \
{--selinux-apifs-context=,-L+}'[Sets the SELinux security context to be used to label files in the virtual API file systems in the container.]' \
'--capability=[List one or more additional capabilities to grant the container.]:capabilities:_nspawn-caps' \
'--drop-capability=[Specify one or more additional capabilities to drop for the container]' \
"--link-journal=[Control whether the container's journal shall be made visible to the host system.]:options:(no, host, guest, auto)" \
'-j[Equivalent to --link-journal=guest.]'
'-j[Equivalent to --link-journal=guest.]' \
'--read-only[Mount the root file system read only for the container.]' \
'--bind=[Bind mount a file or directory from the host into the container.]' \
'--bind-ro=[Bind mount a file or directory from the host into the container (read-only).]' \
'--setenv=[Specifies an environment variable assignment to pass to the init process in the container, in the format "NAME=VALUE".]' \
'--share-system[Allows the container to share certain system facilities with the host.]' \
'--register=[Controls whether the container is registered with systemd-machined(8).]' \
'--keep-unit[Instead of creating a transient scope unit to run the container in, simply register the service or scope unit systemd-nspawn has been invoked in with systemd-machined(8).]' \
'--personality=[Control the architecture ("personality") reported by uname(2) in the container.]' \
{--quiet,-q}'[Turns off any status output by the tool itself.]' \
{--help,-h}'[Print a short help text and exit.]' \
'--version[Print a short version string and exit.]'