#compdef hostnamectl -*- shell-script -*- # 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'