-
Notifications
You must be signed in to change notification settings - Fork 3
/
log
executable file
·117 lines (101 loc) · 2.13 KB
/
log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# Bash completion for log
# by Tony Williams, [email protected]
# version 0.1
# 29/07/2017
__logcomp_words_include() {
local i=1
while [[ "$i" -lt "$COMP_CWORD" ]]
do
if [[ "${COMP_WORDS[i]}" = "$1" ]]
then
return 0
fi
i="$((++i))"
done
return 1
}
__logcomp() {
# break $1 on space, tab, and newline characters,
# and turn it into a newline separated list of words
local list s sep=$'\n' IFS=$' '$'\t'$'\n'
local cur="${COMP_WORDS[COMP_CWORD]}"
for s in $1
do
__logcomp_words_include "$s" && continue
list="$list$s$sep"
done
IFS="$sep"
COMPREPLY=($(compgen -W "$list" -- "$cur"))
}
_log_help() {
return
}
_log_collect() {
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__logcomp "--output --start --last --size"
return
;;
esac
}
_log_config() {
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__logcomp "--reset --status --subsystem --category --process --mode"
return
;;
esac
}
_log_erase() {
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__logcomp "--all --ttl"
return
;;
esac
}
_log_show() {
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__logcomp "--archive --file --predicate --source --style --start --end --last\
--timezone --info --debug"
return
;;
esac
}
_log_stream() {
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__logcomp "--level --predicate --parent --process --style --source --timeout\
--type "
return
;;
esac
}
_log() {
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
if [[ "$COMP_CWORD" = "1" ]] # we are matching the command
then
opts="help version restore restoreexact server imagescan info"
COMPREPLY=( $(compgen -W "${opts}" ${cur}) )
return 0
fi
cmd="${COMP_WORDS[1]}"
case "$cmd" in
help) _log_help ;;
collect) _log_collect ;;
config) _log_config ;;
erase) _log_erase ;;
show) _log_show ;;
stream) _log_stream ;;
esac
}
complete -o bashdefault -o default -F _log log