mirror of
https://github.com/clearlinux/systemd-stable.git
synced 2026-09-05 13:11:32 +00:00
Parameters to hostnamectl command are not optional and should not be marked as such in the man page. (cherry picked from commit1ed7749564) (cherry picked from commitba838f7f9b)
89 lines
3.1 KiB
Plaintext
89 lines
3.1 KiB
Plaintext
#compdef localectl
|
|
|
|
_localectl_set-locale() {
|
|
local -a _locales locale_fields
|
|
locale_fields=(LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \
|
|
LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER \
|
|
LC_NAME LC_ADDRESS LC_TELEPHONE \
|
|
LC_MEASUREMENT LC_IDENTIFICATION)
|
|
# LC_ALL is omitted on purpose
|
|
|
|
local expl suf
|
|
_locales=( ${(f)"$(_call_program locales "$service" list-locales)"} )
|
|
compset -P1 '*='
|
|
if [[ -prefix 1 *\= ]]; then
|
|
local conf=${PREFIX%%\=*}
|
|
_wanted locales expl "locales configs" \
|
|
_combination localeconfs confs=$conf locales "$@" -
|
|
else
|
|
compadd -S '=' $locale_fields
|
|
fi
|
|
}
|
|
|
|
_localectl_set-keymap() {
|
|
local -a _keymaps
|
|
if (( CURRENT <= 3 )); then
|
|
_keymaps=( ${(f)"$(_call_program locales "$service" list-keymaps)"} )
|
|
_describe keymaps _keymaps
|
|
else
|
|
_message "no more options"
|
|
fi
|
|
}
|
|
|
|
_localectl_set-x11-keymap() {
|
|
if (( $+commands[pkg-config] )); then
|
|
local -a _file _layout _model _variant _options
|
|
local _xorg_lst
|
|
_xorg_lst=${"$($commands[pkg-config] xkeyboard-config --variable=xkb_base)"}
|
|
_file=( ${(ps:\n\!:)"$(<$_xorg_lst/rules/xorg.lst)"} )
|
|
_layout=( ${${${(M)${(f)_file[1]}:# *}# }%% *} )
|
|
_model=( ${${${(M)${(f)_file[2]}:# *}# }%% *} )
|
|
_variant=( ${${${(M)${(f)_file[3]}:# *}# }%% *} )
|
|
_options=( ${${${(M)${(f)_file[4]}:# *}# }%% *} )
|
|
#_layout=( ${(f)"$( echo $_file[1] | awk '/^ / {print $1}' )"} )
|
|
#_model=( ${(f)"$(echo $_file[2] | awk '/^ / {print $1}')"} )
|
|
#_variant=( ${(f)"$(echo $_file[3] | awk '/^ / {print $1}')"} )
|
|
#_options=( ${(f)"$(echo ${_file[4]//:/\\:} | awk '/^ / {print $1}')"} )
|
|
|
|
case $CURRENT in
|
|
2) _describe layouts _layout ;;
|
|
3) _describe models _model;;
|
|
4) _describe variants _variant;;
|
|
5) _describe options _options;;
|
|
*) _message "no more options"
|
|
esac
|
|
fi
|
|
}
|
|
|
|
_localectl_command() {
|
|
local -a _localectl_cmds
|
|
_localectl_cmds=(
|
|
'status:Show current locale settings'
|
|
'set-locale:Set system locale'
|
|
'list-locales:Show known locales'
|
|
'set-keymap:Set virtual console keyboard mapping'
|
|
'list-keymaps:Show known virtual console keyboard mappings'
|
|
'set-x11-keymap:Set X11 keyboard mapping'
|
|
)
|
|
if (( CURRENT == 1 )); then
|
|
_describe -t commands 'localectl command' _localectl_cmds
|
|
else
|
|
local curcontext="$curcontext"
|
|
cmd="${${_localectl_cmds[(r)$words[1]:*]%%:*}}"
|
|
if (( $+functions[_localectl_$cmd] )); then
|
|
_localectl_$cmd
|
|
else
|
|
_message "unknown localectl command: $words[1]"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
_arguments \
|
|
{-h,--help}'[Show this help]' \
|
|
'--version[Show package version]' \
|
|
"--no-convert[Don't convert keyboard mappings]" \
|
|
'--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' \
|
|
'*::localectl commands:_localectl_command'
|