bash-completion: --property support
Just bash.
This commit is contained in:
parent
f03dc7c0c5
commit
caffaf5859
|
@ -22,6 +22,15 @@ __systemctl() {
|
||||||
systemctl $mode --full --no-legend "$@"
|
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 () {
|
__contains_word () {
|
||||||
local word=$1; shift
|
local word=$1; shift
|
||||||
for w in $*; do [[ $w = $word ]] && return 0; done
|
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'
|
[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
|
if __contains_word "$prev" ${OPTS[ARG]}; then
|
||||||
case $prev in
|
case $prev in
|
||||||
--signal|-s)
|
--signal|-s)
|
||||||
|
@ -89,7 +104,7 @@ _systemctl () {
|
||||||
comps=$(compgen -A hostname)
|
comps=$(compgen -A hostname)
|
||||||
;;
|
;;
|
||||||
--property|-p)
|
--property|-p)
|
||||||
comps=''
|
comps=$(__systemd_properties $mode)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
|
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
|
||||||
|
@ -101,12 +116,6 @@ _systemctl () {
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if __contains_word "--user" ${COMP_WORDS[*]}; then
|
|
||||||
mode=--user
|
|
||||||
else
|
|
||||||
mode=--system
|
|
||||||
fi
|
|
||||||
|
|
||||||
local -A VERBS=(
|
local -A VERBS=(
|
||||||
[ALL_UNITS]='is-active is-failed is-enabled status show mask preset'
|
[ALL_UNITS]='is-active is-failed is-enabled status show mask preset'
|
||||||
[ENABLED_UNITS]='disable'
|
[ENABLED_UNITS]='disable'
|
||||||
|
|
Loading…
Reference in a new issue