# chronyc(1) completion -*- shell-script -*- _chronyc_command_args() { local -a args args=($(compgen -W "$($1 help 2>/dev/null | awk '/^'$prev'\s[^ []/ { gsub("\\|", " ", $2); print $2 }')")) case $args in \) _known_hosts_real -- "$cur" ;; \<*) ;; *) COMPREPLY+=($(compgen -W '${args[@]}' -- "$cur")) ;; esac } _chronyc() { local cur prev words cword _init_completion || return case $prev in --help | -*p) return ;; -*h) _known_hosts_real -- "$cur" return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_usage "$1") -6' -- "$cur")) return fi local i args args=0 for ((i = 1; i < cword; i++)); do [[ ${words[i]} != -* && ${words[i - 1]} != @(-p|-h) ]] && ((args++)) done case $args in 0) COMPREPLY=($(compgen -W "$($1 help 2>/dev/null | awk '!/(^ |: *$)/ { sub("\\|", " ", $1); print $1 }')" \ -- "$cur")) ;; 1) _chronyc_command_args "$1" if [[ ! ${COMPREPLY-} && $prev == sources?(tats) ]]; then # [-v] not handled by _chronyc_command_args yet COMPREPLY=($(compgen -W '-v' -- "$cur")) fi ;; 2) [[ $prev == @(peer|server) ]] && _known_hosts_real -- "$cur" ;; esac } && complete -F _chronyc chronyc # ex: filetype=sh