mirror of
https://github.com/rfc1036/whois.git
synced 2026-05-03 06:51:09 +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)
|
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
|
all: Makefile.depend whois mkpasswd pos
|
||||||
|
|
||||||
@ -121,7 +123,7 @@ afl-run:
|
|||||||
nice afl-fuzz -i ../afl_in -o ../afl_out -- ./whois
|
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-whois: whois
|
||||||
$(INSTALL) -d $(BASEDIR)$(prefix)/bin/
|
$(INSTALL) -d $(BASEDIR)$(prefix)/bin/
|
||||||
@ -140,6 +142,11 @@ install-mkpasswd: mkpasswd
|
|||||||
install-pos:
|
install-pos:
|
||||||
cd po && $(MAKE) install
|
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
|
distclean: clean
|
||||||
rm -f version.h po/whois.pot
|
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