| #compdef timedatectl | |
| # SPDX-License-Identifier: LGPL-2.1-or-later | |
| _timedatectl_set-timezone(){ | |
| local -a _timezones | |
| _timezones=( ${(f)"$(_call_program timezones "${service}" list-timezones)"} ) | |
| compadd "$_timezones[@]" | |
| } | |
| _timedatectl_set-time(){ | |
| _message "YYYY-MM-DD HH:MM:SS" | |
| } | |
| _timedatectl_set-local-rtc(){ | |
| local -a _options | |
| _options=( | |
| '0:Maintain RTC in universal time' | |
| '1:Maintain RTC in local time' | |
| ) | |
| _describe options _options | |
| } | |
| _timedatectl_set-ntp(){ | |
| local -a _options | |
| _options=( | |
| '0:Disable NTP based network time configuration' | |
| '1:Enable NTP based network time configuration' | |
| ) | |
| _describe options _options | |
| } | |
| _timedatectl_command(){ | |
| local -a _timedatectl_cmds | |
| _timedatectl_cmds=( | |
| 'status:Show current time settings' | |
| 'set-time:Set system time' | |
| 'set-timezone:Set system timezone' | |
| 'list-timezones:Show known timezones' | |
| 'set-local-rtc:Control whether RTC is in local time' | |
| 'set-ntp:Control whether NTP is enabled' | |
| ) | |
| if (( CURRENT == 1 )); then | |
| _describe -t commands 'timedatectl command' _timedatectl_cmds | |
| else | |
| local curcontext="$curcontext" | |
| cmd="${${_timedatectl_cmds[(r)$words[1]:*]%%:*}}" | |
| if (( $#cmd )); then | |
| if (( $+functions[_timedatectl_$cmd] )); then | |
| _timedatectl_$cmd | |
| else | |
| _message "no more options" | |
| fi | |
| else | |
| _message "unknown timedatectl command: $words[1]" | |
| fi | |
| fi | |
| } | |
| _arguments -s \ | |
| {-h,--help}'[Show this help]' \ | |
| '--version[Show package version]' \ | |
| '--adjust-system-clock[Adjust system clock when changing local RTC mode]' \ | |
| '--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]:machines:_sd_machines' \ | |
| '*::timedatectl commands:_timedatectl_command' |