The following commit has been merged in the dynamic-loading branch:
commit fa5dbb6c8e724b32575a1c9e949c53f4ed145ea9
Author: Ville Skyttä <[email protected]>
Date:   Sat Oct 22 12:49:31 2011 +0300

    mailman: Split completions to separate files from add_members.

diff --git a/completions/.gitignore b/completions/.gitignore
index c7e9660..944fc3a 100644
--- a/completions/.gitignore
+++ b/completions/.gitignore
@@ -4,7 +4,6 @@ alpine
 alternatives
 animate
 apropos
-arch
 asciidoc.py
 autoheader
 automake-1.11
@@ -15,18 +14,14 @@ btdownloadgui.py
 c++
 cc
 cdrecord
-change_pw
-check_db
 ci
 ciptool
 civclient
 civserver
-clone_member
 co
 compare
 compgen
 composite
-config_list
 conjure
 cowthink
 createdb
@@ -39,7 +34,6 @@ dpkg-reconfigure
 dropdb
 edquota
 filebucket
-find_member
 freeciv-sdl
 freeciv-xaw
 g++
@@ -60,7 +54,6 @@ identify
 ifdown
 ifstatus
 import
-inject
 javac
 javadoc
 kplayer
@@ -74,9 +67,6 @@ ldapmodrdn
 ldappasswd
 ldapwhoami
 lintian-info
-list_admins
-list_members
-list_owners
 lvchange
 lvcreate
 lvdisplay
@@ -100,7 +90,6 @@ mplayer2
 msgsnarf
 muttng
 ncal
-newlist
 pbzip2
 pccardctl
 perldoc
@@ -138,11 +127,9 @@ quotaon
 ralsh
 rcsdiff
 rdict
-remove_members
 repquota
 rfcomm
 rlog
-rmlist
 rpm2targz
 rpm2txz
 rpmbuild
@@ -161,7 +148,6 @@ smbtar
 smbtree
 spovray
 stream
-sync_members
 tightvncviewer
 tracepath6
 typeset
@@ -185,7 +171,6 @@ vgscan
 vgsplit
 vigr
 whatis
-withlist
 xpovray
 xvnc4viewer
 ypcat
diff --git a/completions/Makefile.am b/completions/Makefile.am
index e0887d5..3f8b3fc 100644
--- a/completions/Makefile.am
+++ b/completions/Makefile.am
@@ -9,6 +9,7 @@ bashcomp_DATA = abook \
                apt-cache \
                apt-get \
                aptitude \
+               arch \
                arping \
                arpspoof \
                asciidoc \
@@ -29,6 +30,8 @@ bashcomp_DATA = abook \
                cfagent \
                cfrun \
                chage \
+               change_pw \
+               check_db \
                check_perms \
                chgrp \
                chkconfig \
@@ -39,7 +42,9 @@ bashcomp_DATA = abook \
                cksfv \
                cleanarch \
                clisp \
+               clone_member \
                complete \
+               config_list \
                configure \
                convert \
                cowsay \
@@ -76,6 +81,7 @@ bashcomp_DATA = abook \
                filefrag \
                filesnarf \
                find \
+               find_member \
                freeciv-gtk2 \
                freeciv-server \
                function \
@@ -111,6 +117,7 @@ bashcomp_DATA = abook \
                iftop \
                ifup \
                info \
+               inject \
                insmod \
                installpkg \
                invoke-rc.d \
@@ -148,7 +155,10 @@ bashcomp_DATA = abook \
                links \
                lintian \
                lisp \
+               list_admins \
                list_lists \
+               list_members \
+               list_owners \
                look \
                lpq \
                lpr \
@@ -187,6 +197,7 @@ bashcomp_DATA = abook \
                mysqladmin \
                ncftp \
                newgrp \
+               newlist \
                newusers \
                nmap \
                nslookup \
@@ -228,6 +239,7 @@ bashcomp_DATA = abook \
                quota \
                rcs \
                rdesktop \
+               remove_members \
                removepkg \
                renice \
                reptyr \
@@ -235,6 +247,7 @@ bashcomp_DATA = abook \
                resolvconf \
                rfkill \
                ri \
+               rmlist \
                rmmod \
                route \
                rpcdebug \
@@ -264,6 +277,7 @@ bashcomp_DATA = abook \
                sshow \
                strace \
                svk \
+               sync_members \
                sysbench \
                sysctl \
                tar \
@@ -288,6 +302,7 @@ bashcomp_DATA = abook \
                vpnc \
                watch \
                webmitm \
+               withlist \
                wodim \
                wol \
                wtf \
@@ -318,7 +333,6 @@ CLEANFILES = \
        alternatives \
        animate \
        apropos \
-       arch \
        asciidoc.py \
        autoheader \
        automake-1.11 \
@@ -329,18 +343,14 @@ CLEANFILES = \
        c++ \
        cc \
        cdrecord \
-       change_pw \
-       check_db \
        ci \
        ciptool \
        civclient \
        civserver \
-       clone_member \
        co \
        compare \
        compgen \
        composite \
-       config_list \
        conjure \
        cowthink \
        createdb \
@@ -353,7 +363,6 @@ CLEANFILES = \
        dropdb \
        edquota \
        filebucket \
-       find_member \
        freeciv-sdl \
        freeciv-xaw \
        g++ \
@@ -374,7 +383,6 @@ CLEANFILES = \
        ifdown \
        ifstatus \
        import \
-       inject \
        javac \
        javadoc \
        kplayer \
@@ -388,9 +396,6 @@ CLEANFILES = \
        ldappasswd \
        ldapwhoami \
        lintian-info \
-       list_admins \
-       list_members \
-       list_owners \
        lvchange \
        lvcreate \
        lvdisplay \
@@ -414,7 +419,6 @@ CLEANFILES = \
        msgsnarf \
        muttng \
        ncal \
-       newlist \
        pbzip2 \
        pccardctl \
        perldoc \
@@ -452,11 +456,9 @@ CLEANFILES = \
        ralsh \
        rcsdiff \
        rdict \
-       remove_members \
        repquota \
        rfcomm \
        rlog \
-       rmlist \
        rpm2targz \
        rpm2txz \
        rpmbuild \
@@ -475,7 +477,6 @@ CLEANFILES = \
        smbtree \
        spovray \
        stream \
-       sync_members \
        tightvncviewer \
        tracepath6 \
        typeset \
@@ -499,7 +500,6 @@ CLEANFILES = \
        vgsplit \
        vigr \
        whatis \
-       withlist \
        xpovray \
        xvnc4viewer \
        ypcat
@@ -509,12 +509,6 @@ symlinks:
                rm -f $(targetdir)/$$file && \
                        $(LN_S) aclocal $(targetdir)/$$file ; \
        done
-       for file in remove_members find_member clone_member sync_members \
-               list_admins list_owners list_members change_pw withlist \
-               newlist rmlist config_list arch inject check_db ; do \
-               rm -f $(targetdir)/$$file && \
-                       $(LN_S) add_members $(targetdir)/$$file ; \
-       done
        for file in phing ; do \
                rm -f $(targetdir)/$$file && \
                        $(LN_S) ant $(targetdir)/$$file ; \
diff --git a/completions/add_members b/completions/add_members
index 930f9c6..27feb5e 100644
--- a/completions/add_members
+++ b/completions/add_members
@@ -1,9 +1,4 @@
-# mailman completion
-
-_mailman_lists()
-{
-    COMPREPLY=( $( compgen -W '$( list_lists -b 2>/dev/null )' -- "$cur" ) )
-}
+# mailman add_members completion
 
 _add_members()
 {
@@ -28,340 +23,12 @@ _add_members()
             --digest-members-file --welcome-msg \
             --admin-notify --help' -- "$cur" ) )
     else
-        _mailman_lists
+        _xfunc list_lists _mailman_lists
     fi
 
 } &&
 complete -F _add_members add_members
 
-_remove_members()
-{
-    local cur prev words cword split
-    _init_completion -s || return
-
-    case $prev in
-        -f|--file)
-            _filedir
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--file --all --fromall --nouserack \
-            --noadminack --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _remove_members remove_members
-
-_find_member()
-{
-    local cur prev words cword split
-    _init_completion -s || return
-
-    case $prev in
-        -l|-x|--listname|--exclude)
-            _mailman_lists
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--listname --exclude --owners \
-            --help' -- "$cur" ) )
-    fi
-
-} &&
-complete -F _find_member find_member
-
-_clone_member()
-{
-    local cur prev words cword split
-    _init_completion -s || return
-
-    case $prev in
-        -l|--listname)
-            _mailman_lists
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--listname --remove --admin \
-            --quiet --nomodify --help' -- "$cur" ) )
-    fi
-
-} &&
-complete -F _clone_member clone_member
-
-_sync_members()
-{
-    local cur prev words cword split
-    _init_completion -s || return
-
-    case $prev in
-        -w|-g|-d|--welcome-msg|--goodbye-msg|--digest)
-            COMPREPLY=( $( compgen -W 'y n' -- "$cur") )
-            return 0
-            ;;
-        -d|--file)
-            _filedir
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--no-change --welcome-msg \
-            --goodbye-msg --digest --notifyadmin --file --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _sync_members sync_members
-
-_list_admins()
-{
-    local cur prev words cword
-    _init_completion || return
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--all-vhost --all --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _list_admins list_admins
-
-_list_owners()
-{
-    local cur prev words cword
-    _init_completion || return
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--with-listnames --moderators \
-            --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _list_owners list_owners
-
-_list_members()
-{
-    local cur prev words cword split
-    _init_completion -s || return
-
-    case $prev in
-        -o|--output)
-            _filedir
-            return 0
-            ;;
-        -d|--digest)
-            COMPREPLY=( $( compgen -W 'mime plain' -- "$cur") )
-            return 0
-            ;;
-        -n|--nomail)
-            COMPREPLY=( $( compgen -W 'byadmin byuser bybounce unknown' \
-                -- "$cur") )
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--output --regular --digest \
-            --nomail --fullnames --preserve --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _list_members list_members
-
-_change_pw()
-{
-    local cur prev words cword split
-    _init_completion -s || return
-
-    case $prev in
-        -l|--listname)
-            _mailman_lists
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--all --domain --listname \
-            --password --quiet --help' -- "$cur" ) )
-    fi
-
-} &&
-complete -F _change_pw change_pw
-
-_withlist()
-{
-    local cur prev words cword
-    _init_completion || return
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--lock --interactive \
-            --run --all --quiet --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _withlist withlist
-
-_newlist()
-{
-    local cur prev words cword
-    _init_completion || return
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--language --quiet --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _newlist newlist
-
-_rmlist()
-{
-    local cur prev words cword
-    _init_completion || return
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--archives --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _rmlist rmlist
-
-_config_list()
-{
-    local cur prev words cword split
-    _init_completion -s || return
-
-    case $prev in
-        -i|-o|--inputfile|--outputfile)
-            _filedir
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--inputfile --outputfile \
-            --checkonly --verbose --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _config_list config_list
-
-# Try to detect whether this is the mailman "arch" to avoid installing
-# it for the coreutils/util-linux-ng one.
-_have arch && _have mailmanctl &&
-_arch()
-{
-    local cur prev words cword split
-    _init_completion -s || return
-
-    case $prev in
-        -w|-g|-d|--welcome-msg|--goodbye-msg|--digest)
-            COMPREPLY=( $( compgen -W 'y n' -- "$cur") )
-            return 0
-            ;;
-        -d|--file)
-            _filedir
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--wipe --start --end --quiet \
-            --help' -- "$cur" ) )
-    else
-        local args=$cword
-        for (( i=1; i < cword; i++ )); do
-            if [[ "${words[i]}" == -* ]]; then
-                args=$(($args-1))
-            fi
-        done
-        case $args in
-            1)
-                _mailman_lists
-                ;;
-            2)
-                _filedir
-                ;;
-        esac
-    fi
-
-} &&
-complete -F _arch arch
-
-_inject()
-{
-    local cur prev words cword split
-    _init_completion -s || return
-
-    case $prev in
-        -l|--listname)
-            _mailman_lists
-            return 0
-            ;;
-    esac
-
-    $split && return 0
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--listname --queue --help' -- "$cur" ) )
-    else
-        _filedir
-    fi
-
-} &&
-complete -F _inject inject
-
-_check_db()
-{
-    local cur prev words cword
-    _init_completion || return
-
-    if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--all --verbose --help' -- "$cur" ) )
-    else
-        _mailman_lists
-    fi
-
-} &&
-complete -F _check_db check_db
-
 # Local variables:
 # mode: shell-script
 # sh-basic-offset: 4
diff --git a/completions/arch b/completions/arch
new file mode 100644
index 0000000..80f1fc3
--- /dev/null
+++ b/completions/arch
@@ -0,0 +1,53 @@
+# mailman arch completion
+
+# Try to detect whether this is the mailman "arch" to avoid installing
+# it for the coreutils/util-linux-ng one.
+_have mailmanctl &&
+_arch()
+{
+    local cur prev words cword split
+    _init_completion -s || return
+
+    case $prev in
+        -w|-g|-d|--welcome-msg|--goodbye-msg|--digest)
+            COMPREPLY=( $( compgen -W 'y n' -- "$cur") )
+            return 0
+            ;;
+        -d|--file)
+            _filedir
+            return 0
+            ;;
+    esac
+
+    $split && return 0
+
+    if [[ "$cur" == -* ]]; then
+        COMPREPLY=( $( compgen -W '--wipe --start --end --quiet \
+            --help' -- "$cur" ) )
+    else
+        local args=$cword
+        for (( i=1; i < cword; i++ )); do
+            if [[ "${words[i]}" == -* ]]; then
+                args=$(($args-1))
+            fi
+        done
+        case $args in
+            1)
+                _xfunc list_lists _mailman_lists
+                ;;
+            2)
+                _filedir
+                ;;
+        esac
+    fi
+
+} &&
+complete -F _arch arch
+
+# 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/completions/chage b/completions/change_pw
similarity index 54%
copy from completions/chage
copy to completions/change_pw
index 3bd1816..aa4507d 100644
--- a/completions/chage
+++ b/completions/change_pw
@@ -1,13 +1,13 @@
-# chage(1) completion
+# mailman change_pw completion
 
-_chage()
+_change_pw()
 {
     local cur prev words cword split
     _init_completion -s || return
 
     case $prev in
-        -d|--lastday|-E|--expiredate|-h|--help|-I|--inactive|-m|--mindays|\
-        -M|--maxdays|-W|--warndays)
+        -l|--listname)
+            _xfunc list_lists _mailman_lists
             return 0
             ;;
     esac
@@ -15,13 +15,12 @@ _chage()
     $split && return 0
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
-        return 0
+        COMPREPLY=( $( compgen -W '--all --domain --listname \
+            --password --quiet --help' -- "$cur" ) )
     fi
 
-    COMPREPLY=( $( compgen -u -- "$cur" ) )
 } &&
-complete -F _chage chage
+complete -F _change_pw change_pw
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/sshmitm b/completions/check_db
similarity index 60%
copy from completions/sshmitm
copy to completions/check_db
index 2260982..5a6cd06 100644
--- a/completions/sshmitm
+++ b/completions/check_db
@@ -1,18 +1,18 @@
-# sshmitm completion
+# mailman check_db completion
 
-_sshmitm()
+_check_db()
 {
     local cur prev words cword
     _init_completion || return
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" )' -- "$cur" ) )
+        COMPREPLY=( $( compgen -W '--all --verbose --help' -- "$cur" ) )
     else
-        _known_hosts_real "$cur"
+        _xfunc list_lists _mailman_lists
     fi
 
 } &&
-complete -F _sshmitm sshmitm
+complete -F _check_db check_db
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/chage b/completions/clone_member
similarity index 54%
copy from completions/chage
copy to completions/clone_member
index 3bd1816..11067e7 100644
--- a/completions/chage
+++ b/completions/clone_member
@@ -1,13 +1,13 @@
-# chage(1) completion
+# mailman clone_member completion
 
-_chage()
+_clone_member()
 {
     local cur prev words cword split
     _init_completion -s || return
 
     case $prev in
-        -d|--lastday|-E|--expiredate|-h|--help|-I|--inactive|-m|--mindays|\
-        -M|--maxdays|-W|--warndays)
+        -l|--listname)
+            _xfunc list_lists _mailman_lists
             return 0
             ;;
     esac
@@ -15,13 +15,12 @@ _chage()
     $split && return 0
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
-        return 0
+        COMPREPLY=( $( compgen -W '--listname --remove --admin \
+            --quiet --nomodify --help' -- "$cur" ) )
     fi
 
-    COMPREPLY=( $( compgen -u -- "$cur" ) )
 } &&
-complete -F _chage chage
+complete -F _clone_member clone_member
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/chage b/completions/config_list
similarity index 53%
copy from completions/chage
copy to completions/config_list
index 3bd1816..a695b03 100644
--- a/completions/chage
+++ b/completions/config_list
@@ -1,13 +1,13 @@
-# chage(1) completion
+# mailman config_list completion
 
-_chage()
+_config_list()
 {
     local cur prev words cword split
     _init_completion -s || return
 
     case $prev in
-        -d|--lastday|-E|--expiredate|-h|--help|-I|--inactive|-m|--mindays|\
-        -M|--maxdays|-W|--warndays)
+        -i|-o|--inputfile|--outputfile)
+            _filedir
             return 0
             ;;
     esac
@@ -15,13 +15,14 @@ _chage()
     $split && return 0
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
-        return 0
+        COMPREPLY=( $( compgen -W '--inputfile --outputfile \
+            --checkonly --verbose --help' -- "$cur" ) )
+    else
+        _xfunc list_lists _mailman_lists
     fi
 
-    COMPREPLY=( $( compgen -u -- "$cur" ) )
 } &&
-complete -F _chage chage
+complete -F _config_list config_list
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/chage b/completions/find_member
similarity index 54%
copy from completions/chage
copy to completions/find_member
index 3bd1816..e1ea650 100644
--- a/completions/chage
+++ b/completions/find_member
@@ -1,13 +1,13 @@
-# chage(1) completion
+# mailman find_member completion
 
-_chage()
+_find_member()
 {
     local cur prev words cword split
     _init_completion -s || return
 
     case $prev in
-        -d|--lastday|-E|--expiredate|-h|--help|-I|--inactive|-m|--mindays|\
-        -M|--maxdays|-W|--warndays)
+        -l|-x|--listname|--exclude)
+            _xfunc list_lists _mailman_lists
             return 0
             ;;
     esac
@@ -15,13 +15,12 @@ _chage()
     $split && return 0
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
-        return 0
+        COMPREPLY=( $( compgen -W '--listname --exclude --owners \
+            --help' -- "$cur" ) )
     fi
 
-    COMPREPLY=( $( compgen -u -- "$cur" ) )
 } &&
-complete -F _chage chage
+complete -F _find_member find_member
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/chage b/completions/inject
similarity index 54%
copy from completions/chage
copy to completions/inject
index 3bd1816..1e4d9d4 100644
--- a/completions/chage
+++ b/completions/inject
@@ -1,13 +1,13 @@
-# chage(1) completion
+# mailman inject completion
 
-_chage()
+_inject()
 {
     local cur prev words cword split
     _init_completion -s || return
 
     case $prev in
-        -d|--lastday|-E|--expiredate|-h|--help|-I|--inactive|-m|--mindays|\
-        -M|--maxdays|-W|--warndays)
+        -l|--listname)
+            _xfunc list_lists _mailman_lists
             return 0
             ;;
     esac
@@ -15,13 +15,13 @@ _chage()
     $split && return 0
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
-        return 0
+        COMPREPLY=( $( compgen -W '--listname --queue --help' -- "$cur" ) )
+    else
+        _filedir
     fi
 
-    COMPREPLY=( $( compgen -u -- "$cur" ) )
 } &&
-complete -F _chage chage
+complete -F _inject inject
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/sshmitm b/completions/list_admins
similarity index 57%
copy from completions/sshmitm
copy to completions/list_admins
index 2260982..6ffeafe 100644
--- a/completions/sshmitm
+++ b/completions/list_admins
@@ -1,18 +1,18 @@
-# sshmitm completion
+# mailman list_admins completion
 
-_sshmitm()
+_list_admins()
 {
     local cur prev words cword
     _init_completion || return
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" )' -- "$cur" ) )
+        COMPREPLY=( $( compgen -W '--all-vhost --all --help' -- "$cur" ) )
     else
-        _known_hosts_real "$cur"
+        _xfunc list_lists _mailman_lists
     fi
 
 } &&
-complete -F _sshmitm sshmitm
+complete -F _list_admins list_admins
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/list_lists b/completions/list_lists
index 4ffbdb9..7209ea7 100644
--- a/completions/list_lists
+++ b/completions/list_lists
@@ -1,5 +1,10 @@
 # mailman list_lists completion
 
+_mailman_lists()
+{
+    COMPREPLY=( $( compgen -W '$( list_lists -b 2>/dev/null )' -- "$cur" ) )
+}
+
 _list_lists()
 {
     local cur prev words cword
diff --git a/completions/list_members b/completions/list_members
new file mode 100644
index 0000000..7b49b20
--- /dev/null
+++ b/completions/list_members
@@ -0,0 +1,42 @@
+# mailman list_members completion
+
+_list_members()
+{
+    local cur prev words cword split
+    _init_completion -s || return
+
+    case $prev in
+        -o|--output)
+            _filedir
+            return 0
+            ;;
+        -d|--digest)
+            COMPREPLY=( $( compgen -W 'mime plain' -- "$cur") )
+            return 0
+            ;;
+        -n|--nomail)
+            COMPREPLY=( $( compgen -W 'byadmin byuser bybounce unknown' \
+                -- "$cur") )
+            return 0
+            ;;
+    esac
+
+    $split && return 0
+
+    if [[ "$cur" == -* ]]; then
+        COMPREPLY=( $( compgen -W '--output --regular --digest \
+            --nomail --fullnames --preserve --help' -- "$cur" ) )
+    else
+        _xfunc list_lists _mailman_lists
+    fi
+
+} &&
+complete -F _list_members list_members
+
+# 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/completions/dumpdb b/completions/list_owners
similarity index 60%
copy from completions/dumpdb
copy to completions/list_owners
index 4f093c6..eb88cba 100644
--- a/completions/dumpdb
+++ b/completions/list_owners
@@ -1,19 +1,19 @@
-# mailman dumpdb completion
+# mailman list_owners completion
 
-_dumpdb()
+_list_owners()
 {
     local cur prev words cword
     _init_completion || return
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '--marshal --pickle --noprint \
+        COMPREPLY=( $( compgen -W '--with-listnames --moderators \
             --help' -- "$cur" ) )
     else
-        _filedir
+        _xfunc list_lists _mailman_lists
     fi
 
 } &&
-complete -F _dumpdb dumpdb
+complete -F _list_owners list_owners
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/sshmitm b/completions/newlist
similarity index 58%
copy from completions/sshmitm
copy to completions/newlist
index 2260982..e5da0cf 100644
--- a/completions/sshmitm
+++ b/completions/newlist
@@ -1,18 +1,18 @@
-# sshmitm completion
+# mailman newlist completion
 
-_sshmitm()
+_newlist()
 {
     local cur prev words cword
     _init_completion || return
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" )' -- "$cur" ) )
+        COMPREPLY=( $( compgen -W '--language --quiet --help' -- "$cur" ) )
     else
-        _known_hosts_real "$cur"
+        _xfunc list_lists _mailman_lists
     fi
 
 } &&
-complete -F _sshmitm sshmitm
+complete -F _newlist newlist
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/chage b/completions/remove_members
similarity index 53%
copy from completions/chage
copy to completions/remove_members
index 3bd1816..f062205 100644
--- a/completions/chage
+++ b/completions/remove_members
@@ -1,13 +1,13 @@
-# chage(1) completion
+# mailman remove_members completion
 
-_chage()
+_remove_members()
 {
     local cur prev words cword split
     _init_completion -s || return
 
     case $prev in
-        -d|--lastday|-E|--expiredate|-h|--help|-I|--inactive|-m|--mindays|\
-        -M|--maxdays|-W|--warndays)
+        -f|--file)
+            _filedir
             return 0
             ;;
     esac
@@ -15,13 +15,14 @@ _chage()
     $split && return 0
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
-        return 0
+        COMPREPLY=( $( compgen -W '--file --all --fromall --nouserack \
+            --noadminack --help' -- "$cur" ) )
+    else
+        _xfunc list_lists _mailman_lists
     fi
 
-    COMPREPLY=( $( compgen -u -- "$cur" ) )
 } &&
-complete -F _chage chage
+complete -F _remove_members remove_members
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/sshmitm b/completions/rmlist
similarity index 60%
copy from completions/sshmitm
copy to completions/rmlist
index 2260982..5f77092 100644
--- a/completions/sshmitm
+++ b/completions/rmlist
@@ -1,18 +1,18 @@
-# sshmitm completion
+# mailman rmlist completion
 
-_sshmitm()
+_rmlist()
 {
     local cur prev words cword
     _init_completion || return
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" )' -- "$cur" ) )
+        COMPREPLY=( $( compgen -W '--archives --help' -- "$cur" ) )
     else
-        _known_hosts_real "$cur"
+        _xfunc list_lists _mailman_lists
     fi
 
 } &&
-complete -F _sshmitm sshmitm
+complete -F _rmlist rmlist
 
 # Local variables:
 # mode: shell-script
diff --git a/completions/sync_members b/completions/sync_members
new file mode 100644
index 0000000..ba23267
--- /dev/null
+++ b/completions/sync_members
@@ -0,0 +1,37 @@
+# mailman sync_members completion
+
+_sync_members()
+{
+    local cur prev words cword split
+    _init_completion -s || return
+
+    case $prev in
+        -w|-g|-d|--welcome-msg|--goodbye-msg|--digest)
+            COMPREPLY=( $( compgen -W 'y n' -- "$cur") )
+            return 0
+            ;;
+        -d|--file)
+            _filedir
+            return 0
+            ;;
+    esac
+
+    $split && return 0
+
+    if [[ "$cur" == -* ]]; then
+        COMPREPLY=( $( compgen -W '--no-change --welcome-msg \
+            --goodbye-msg --digest --notifyadmin --file --help' -- "$cur" ) )
+    else
+        _xfunc list_lists _mailman_lists
+    fi
+
+} &&
+complete -F _sync_members sync_members
+
+# 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/completions/webmitm b/completions/withlist
similarity index 54%
copy from completions/webmitm
copy to completions/withlist
index cf181f8..167d653 100644
--- a/completions/webmitm
+++ b/completions/withlist
@@ -1,18 +1,19 @@
-# webmitm completion
+# mailman withlist completion
 
-_webmitm()
+_withlist()
 {
     local cur prev words cword
     _init_completion || return
 
     if [[ "$cur" == -* ]]; then
-        COMPREPLY=( $( compgen -W '$( _parse_usage "$1" )' -- "$cur" ) )
+        COMPREPLY=( $( compgen -W '--lock --interactive \
+            --run --all --quiet --help' -- "$cur" ) )
     else
-        _known_hosts_real "$cur"
+        _xfunc list_lists _mailman_lists
     fi
 
 } &&
-complete -F _webmitm webmitm
+complete -F _withlist withlist
 
 # Local variables:
 # mode: shell-script

-- 
bash-completion

_______________________________________________
Bash-completion-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/bash-completion-commits

Reply via email to