forked from rfc1036/whois
-
Notifications
You must be signed in to change notification settings - Fork 0
/
whois.bash
86 lines (80 loc) · 1.33 KB
/
whois.bash
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
_whois_query() {
"$1" -q "$2" 2>/dev/null | while read -r item _; do
[[ $item == %* ]] && continue
printf "%s\n" "${item%%:*}"
done
}
_whois_hosts() {
# _known_hosts_real from github.com/scop/bash-completion if available
if declare -f _known_hosts_real &>/dev/null; then
_known_hosts_real -- "$1"
return 0
fi
COMPREPLY=($(compgen -A hostname -- "$1"))
}
_whois() {
case $3 in
--help | --version | -p | --port | -i)
return 0
;;
-h | --host)
_whois_hosts "$2"
return 0
;;
-T | -t | -v)
[[ ${_whois_types-} ]] ||
_whois_types=" $(_whois_query "$1" types)"
COMPREPLY=($(compgen -W '$_whois_types' -- "$2"))
return 0
;;
-s | -g)
[[ ${_whois_sources-} ]] ||
_whois_sources=" $(_whois_query "$1" sources)"
COMPREPLY=($(compgen -W '$_whois_sources' -- "$2"))
if [[ $3 == -g ]]; then
[[ ${#COMPREPLY[*]} -eq 1 ]] && COMPREPLY[0]+=:
compopt -o nospace
fi
return 0
;;
-q)
COMPREPLY=($(compgen -W 'version sources types' -- "$2"))
return 0
;;
esac
if [[ $2 == -* ]]; then
COMPREPLY=($(compgen -W '
-h --host
-p --port
-I
-H
--verbose
--no-recursion
--help
--version
-l
-L
-m
-M
-c
-x
-b
-B
-G
-d
-i
-T
-K
-r
-R
-a
-s
-g
-t
-v
-q
' -- "$2"))
return 0
fi
_whois_hosts "$2"
} && complete -F _whois whois