| #compdef hostnamectl | |
| # SPDX-License-Identifier: LGPL-2.1-or-later | |
| (( $+functions[_hostnamectl_hostname] )) || | |
| _hostnamectl_hostname() { | |
| if (( CURRENT <= 3 )); then | |
| _message "new hostname" | |
| else | |
| _message "no more options" | |
| fi | |
| } | |
| (( $+functions[_hostnamectl_icon-name] )) || | |
| _hostnamectl_icon-name() { | |
| if (( CURRENT <= 3 )); then | |
| _message "new icon name" | |
| else | |
| _message "no more options" | |
| fi | |
| } | |
| (( $+functions[_hostnamectl_chassis] )) || | |
| _hostnamectl_chassis() { | |
| if (( CURRENT <= 3 )); then | |
| _chassis=( desktop laptop convertible server tablet handset watch embedded vm container ) | |
| _describe chassis _chassis | |
| else | |
| _message "no more options" | |
| fi | |
| } | |
| (( $+functions[_hostnamectl_deployment] )) || | |
| _hostnamectl_deployment() { | |
| if (( CURRENT <= 3 )); then | |
| _message "new environment" | |
| else | |
| _message "no more options" | |
| fi | |
| } | |
| (( $+functions[_hostnamectl_location] )) || | |
| _hostnamectl_location() { | |
| if (( CURRENT <= 3 )); then | |
| _message "new location" | |
| else | |
| _message "no more options" | |
| fi | |
| } | |
| (( $+functions[_hostnamectl_commands] )) || | |
| _hostnamectl_commands() { | |
| local -a _hostnamectl_cmds | |
| _hostnamectl_cmds=( | |
| "status:Show current hostname settings" | |
| "hostname:Get/set system hostname" | |
| "icon-name:Get/set icon name for host" | |
| "chassis:Get/set chassis type for host" | |
| "deployment:Get/set deployment environment for host" | |
| "location:Get/set location for host" | |
| ) | |
| if (( CURRENT == 1 )); then | |
| _describe -t commands 'hostnamectl commands' _hostnamectl_cmds || compadd "$@" | |
| else | |
| local curcontext="$curcontext" | |
| cmd="${${_hostnamectl_cmds[(r)$words[1]:*]%%:*}}" | |
| if (( $#cmd )); then | |
| if [[ $cmd == status ]]; then | |
| _message "no options" | |
| else | |
| _hostnamectl_$cmd | |
| fi | |
| else | |
| _message "unknown hostnamectl command: $words[1]" | |
| fi | |
| fi | |
| } | |
| (( $+functions[_hostnamectl_get_json] )) || _hostnamectl_get_json() | |
| { | |
| local -a _json_forms | |
| _json_forms=( $(hostnamectl --json=help 2>/dev/null) ) | |
| _values 'format' $_json_forms | |
| } | |
| _arguments -s \ | |
| {-h,--help}'[Show this help]' \ | |
| '--version[Show package version]' \ | |
| '--transient[Only set transient hostname]' \ | |
| '--static[Only set static hostname]' \ | |
| '--pretty[Only set pretty hostname]' \ | |
| '--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]:machines:_sd_machines' \ | |
| '--json[Shows output formatted as JSON]:format:_hostnamectl_get_json' \ | |
| '*::hostnamectl commands:_hostnamectl_commands' |