[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