bash-completion: --property support

Just bash.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2013-04-16 20:38:41 -04:00
parent f03dc7c0c5
commit caffaf5859
1 changed files with 16 additions and 7 deletions

View File

@ -22,6 +22,15 @@ __systemctl() {
systemctl $mode --full --no-legend "$@"
}
__systemd_properties() {
local mode=$1
{ __systemctl $mode show;
systemd --dump-configuration-items; } |
while IFS='=' read -r key value; do
[[ $value ]] && echo "$key"
done
}
__contains_word () {
local word=$1; shift
for w in $*; do [[ $w = $word ]] && return 0; done
@ -67,6 +76,12 @@ _systemctl () {
[ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --root'
)
if __contains_word "--user" ${COMP_WORDS[*]}; then
mode=--user
else
mode=--system
fi
if __contains_word "$prev" ${OPTS[ARG]}; then
case $prev in
--signal|-s)
@ -89,7 +104,7 @@ _systemctl () {
comps=$(compgen -A hostname)
;;
--property|-p)
comps=''
comps=$(__systemd_properties $mode)
;;
esac
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
@ -101,12 +116,6 @@ _systemctl () {
return 0
fi
if __contains_word "--user" ${COMP_WORDS[*]}; then
mode=--user
else
mode=--system
fi
local -A VERBS=(
[ALL_UNITS]='is-active is-failed is-enabled status show mask preset'
[ENABLED_UNITS]='disable'