[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 1.3-334-g5a5683c
Ville Skyttä
ville.skytta at iki.fi
Thu May 26 19:47:47 UTC 2011
The following commit has been merged in the master branch:
commit 5a5683c080bab1c19e677ebdd60f2ec1b0168e48
Author: Ville Skyttä <ville.skytta at iki.fi>
Date: Thu May 26 22:47:41 2011 +0300
htpasswd: New completion.
diff --git a/completions/Makefile.am b/completions/Makefile.am
index a5f6e84..d7d512c 100644
--- a/completions/Makefile.am
+++ b/completions/Makefile.am
@@ -57,6 +57,7 @@ bashcomp_DATA = abook \
gzip \
heimdal \
hping2 \
+ htpasswd \
iconv \
iftop \
ifupdown \
diff --git a/completions/htpasswd b/completions/htpasswd
new file mode 100644
index 0000000..7d4898b
--- /dev/null
+++ b/completions/htpasswd
@@ -0,0 +1,41 @@
+# htpasswd(1) completion
+
+have htpasswd || return
+
+_htpasswd()
+{
+ local cur prev words cword
+ _init_completion || return
+
+ local i o=0 # $o is index of first non-option argument
+ for (( i=1; i <= cword; i++ )); do
+ case ${words[i]} in
+ -*n*) return ;;
+ -*) ;;
+ *) o=$i ; break ;;
+ esac
+ done
+
+ if [[ $o -eq 0 || $o -eq $cword ]]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
+ return
+ fi
+ # Password file (first non-option argument)
+ _filedir
+
+ elif [[ $o -eq $cword-1 ]]; then
+ # Username (second non-option argument)
+ COMPREPLY=( $( compgen -W \
+ '$( cut -d: -f1 "${words[o]}" 2>/dev/null )' -- "$cur" ) )
+ fi
+} &&
+complete -F _htpasswd htpasswd
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/test/completion/htpasswd.exp b/test/completion/htpasswd.exp
new file mode 100644
index 0000000..08294f3
--- /dev/null
+++ b/test/completion/htpasswd.exp
@@ -0,0 +1 @@
+assert_source_completions htpasswd
diff --git a/test/fixtures/htpasswd/htpasswd b/test/fixtures/htpasswd/htpasswd
new file mode 100644
index 0000000..5279c7c
--- /dev/null
+++ b/test/fixtures/htpasswd/htpasswd
@@ -0,0 +1,2 @@
+foo:bar
+quux:baz
diff --git a/test/lib/completions/htpasswd.exp b/test/lib/completions/htpasswd.exp
new file mode 100644
index 0000000..bb66d2f
--- /dev/null
+++ b/test/lib/completions/htpasswd.exp
@@ -0,0 +1,32 @@
+proc setup {} {
+ save_env
+}
+
+
+proc teardown {} {
+ assert_env_unmodified {
+ /OLDPWD=/d
+ }
+}
+
+
+setup
+
+
+assert_complete_any "htpasswd "
+sync_after_int
+
+
+assert_no_complete "htpasswd -n $::srcdir/fixtures/htpasswd/ht"
+sync_after_int
+
+
+assert_complete_dir "htpasswd" "htpasswd " $::srcdir/fixtures/htpasswd
+sync_after_int
+
+
+assert_complete_dir "foo quux" "htpasswd -D htpasswd " $::srcdir/fixtures/htpasswd
+sync_after_int
+
+
+teardown
--
bash-completion
More information about the Bash-completion-commits
mailing list