mirror of
https://github.com/rfc1036/whois.git
synced 2026-01-03 06:15:17 +00:00
Add bash completions
This commit is contained in:
parent
d83bf0dcee
commit
045ffaaafc
9
Makefile
9
Makefile
@ -71,6 +71,8 @@ endif
|
||||
|
||||
CPPFLAGS += $(DEFS) $(INCLUDES)
|
||||
|
||||
BASHCOMPDIR ?= $(shell $(PKG_CONFIG) --variable=completionsdir bash-completion 2>/dev/null || echo /etc/bash_completion.d)
|
||||
|
||||
##############################################################################
|
||||
all: Makefile.depend whois mkpasswd pos
|
||||
|
||||
@ -121,7 +123,7 @@ afl-run:
|
||||
nice afl-fuzz -i ../afl_in -o ../afl_out -- ./whois
|
||||
|
||||
##############################################################################
|
||||
install: install-whois install-mkpasswd install-pos
|
||||
install: install-whois install-mkpasswd install-pos install-bashcomp
|
||||
|
||||
install-whois: whois
|
||||
$(INSTALL) -d $(BASEDIR)$(prefix)/bin/
|
||||
@ -140,6 +142,11 @@ install-mkpasswd: mkpasswd
|
||||
install-pos:
|
||||
cd po && $(MAKE) install
|
||||
|
||||
install-bashcomp:
|
||||
$(INSTALL) -d $(BASEDIR)$(BASHCOMPDIR)
|
||||
$(INSTALL) -m 0644 mkpasswd.bash $(BASEDIR)$(BASHCOMPDIR)/mkpasswd
|
||||
$(INSTALL) -m 0644 whois.bash $(BASEDIR)$(BASHCOMPDIR)/whois
|
||||
|
||||
distclean: clean
|
||||
rm -f version.h po/whois.pot
|
||||
|
||||
|
||||
33
mkpasswd.bash
Normal file
33
mkpasswd.bash
Normal file
@ -0,0 +1,33 @@
|
||||
_mkpasswd() {
|
||||
|
||||
case $3 in
|
||||
--help | --version | --salt | --rounds | --password-fd | -[hVSRP])
|
||||
return 0
|
||||
;;
|
||||
--method | -m)
|
||||
COMPREPLY=($(compgen -W '$(
|
||||
LC_ALL=C "$1" --method=help 2>/dev/null |
|
||||
while read -r method _; do
|
||||
[[ $method == Available ]] ||
|
||||
printf "%s\n" "$method"
|
||||
done
|
||||
)'))
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ $2 == -* ]]; then
|
||||
COMPREPLY=($(compgen -W '
|
||||
--method
|
||||
-5
|
||||
--salt
|
||||
--rounds
|
||||
--password-fd
|
||||
--stdin
|
||||
--help
|
||||
--version
|
||||
' -- "$2"))
|
||||
return 0
|
||||
fi
|
||||
|
||||
} && complete -F _mkpasswd mkpasswd
|
||||
86
whois.bash
Normal file
86
whois.bash
Normal file
@ -0,0 +1,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
|
||||
Loading…
x
Reference in New Issue
Block a user