chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
networkd: netdev - log when loading a .netdev file
[elogind.git]
/
shell-completion
/
bash
/
systemd-analyze
diff --git
a/shell-completion/bash/systemd-analyze
b/shell-completion/bash/systemd-analyze
index 11276ef09cd68b1c75bec21c88702b4191257443..5575bebfc45c1148fedb62bc12676a4d3b6db19e 100644
(file)
--- a/
shell-completion/bash/systemd-analyze
+++ b/
shell-completion/bash/systemd-analyze
@@
-19,25
+19,36
@@
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
__contains_word () {
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
__contains_word () {
- local word=$1; shift
- for w in $*; do [[ $w = $word ]] && return 0; done
- return 1
+ local w word=$1; shift
+ for w in "$@"; do
+ [[ $w = "$word" ]] && return
+ done
+}
+
+__get_machines() {
+ local a b
+ machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; };
}
_systemd_analyze() {
local i verb comps
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
}
_systemd_analyze() {
local i verb comps
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
- local OPTS='--help --version --system --user --from-pattern --to-pattern --order --require'
+
+ local -A OPTS=(
+ [STANDALONE]='--help --version --system --user --from-pattern --to-pattern --order --require --no-pager'
+ [ARG]='-H --host -M --machine'
+ )
local -A VERBS=(
local -A VERBS=(
- [
NO_OPTION]='time blame plot
'
+ [
STANDALONE]='time blame plot dump
'
[CRITICAL_CHAIN]='critical-chain'
[DOT]='dot'
[CRITICAL_CHAIN]='critical-chain'
[DOT]='dot'
+ [LOG_LEVEL]='set-log-level'
)
_init_completion || return
)
_init_completion || return
- for ((i=0;
$i <= $
COMP_CWORD; i++)); do
+ for ((i=0;
i <
COMP_CWORD; i++)); do
if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} &&
! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
verb=${COMP_WORDS[i]}
if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} &&
! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
verb=${COMP_WORDS[i]}
@@
-45,6
+56,19
@@
_systemd_analyze() {
fi
done
fi
done
+ if __contains_word "$prev" ${OPTS[ARG]}; then
+ case $prev in
+ --host|-H)
+ comps=$(compgen -A hostname)
+ ;;
+ --machine|-M)
+ comps=$( __get_machines )
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
+ return 0
+ fi
+
if [[ -z $verb && $cur = -* ]]; then
COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
return 0
if [[ -z $verb && $cur = -* ]]; then
COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
return 0
@@
-53,7
+77,7
@@
_systemd_analyze() {
if [[ -z $verb ]]; then
comps=${VERBS[*]}
if [[ -z $verb ]]; then
comps=${VERBS[*]}
- elif __contains_word "$verb" ${VERBS[
NO_OPTION
]}; then
+ elif __contains_word "$verb" ${VERBS[
STANDALONE
]}; then
if [[ $cur = -* ]]; then
comps='--help --version --system --user'
fi
if [[ $cur = -* ]]; then
comps='--help --version --system --user'
fi
@@
-67,6
+91,14
@@
_systemd_analyze() {
if [[ $cur = -* ]]; then
comps='--help --version --system --user --from-pattern --to-pattern --order --require'
fi
if [[ $cur = -* ]]; then
comps='--help --version --system --user --from-pattern --to-pattern --order --require'
fi
+
+ elif __contains_word "$verb" ${VERBS[LOG_LEVEL]}; then
+ if [[ $cur = -* ]]; then
+ comps='--help --version --system --user'
+ else
+ comps='debug info notice warning err crit alert emerg'
+ fi
+
fi
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
fi
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )