| #compdef hostnamectl |
| |
| _hostnamectl_set-hostname() { |
| if (( CURRENT <= 3 )); then |
| _message "new hostname" |
| else |
| _message "no more options" |
| fi |
| } |
| |
| _hostnamectl_set-icon-name() { |
| if (( CURRENT <= 3 )); then |
| _message "new icon name" |
| else |
| _message "no more options" |
| fi |
| } |
| |
| _hostnamectl_set-chassis() { |
| if (( CURRENT <= 3 )); then |
| _chassis=( desktop laptop server tablet handset watch embedded vm container ) |
| _describe chassis _chassis |
| else |
| _message "no more options" |
| fi |
| } |
| |
| _hostnamectl_set-deployment() { |
| if (( CURRENT <= 3 )); then |
| _message "new environment" |
| else |
| _message "no more options" |
| fi |
| } |
| |
| _hostnamectl_set-location() { |
| if (( CURRENT <= 3 )); then |
| _message "new location" |
| else |
| _message "no more options" |
| fi |
| } |
| |
| _hostnamectl_command() { |
| local -a _hostnamectl_cmds |
| _hostnamectl_cmds=( |
| "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" |
| "set-deployment:Set deployment environment for host" |
| "set-location: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 |
| } |
| |
| _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' \ |
| '*::hostnamectl commands:_hostnamectl_command' |