# Mailman completion by Guillaume Rousse <rousse@ccr.jussieu.fr>

have list_lists && {
_mailman_lists()
{
    COMPREPLY=( $( compgen -W '$( list_lists -b )' -- "$cur" ) )
}

_list_lists()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-a --advertised --virtual-host-overview -V \
            -b --bare -h --help' -- "$cur" ) )
    fi

} &&
complete -F _list_lists list_lists
}

have add_members &&
_add_members()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    case "$prev" in
        -@(r|d|-regular-members-file|-digest-members-file))
            _filedir
            return 0
            ;;
        -@(w|a|-welcome-msg|-admin-notify))
            COMPREPLY=( $( compgen -W 'y n' -- "$cur") )
            return 0
            ;;
    esac

    $split && return 0

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--regular-members-file -r \
            --digest-members-file -d --welcome-msg -w \
            --admin-notify -a --help -h' -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _add_members add_members

have remove_members &&
_remove_members()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    case "$prev" in
        -@(f|-file))
            _filedir
            return 0
            ;;
    esac

    $split && return 0

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--file -f --all -a --fromall --nouserack -n \
            --noadminack -N --help -h' -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _remove_members remove_members

have find_member &&
_find_member()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    case "$prev" in
        -@(l|x|-listname|-exclude))
            _mailman_lists
            return 0
            ;;
    esac

    $split && return 0

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-l --listname -x --exclude --owners -w \
            --help -h' -- "$cur" ) )
    fi

} &&
complete -F _find_member find_member

have clone_member &&
_clone_member()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    case "$prev" in
        -@(l|-listname))
            _mailman_lists
            return 0
            ;;
    esac

    $split && return 0

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-l --listname --remove -r --admin -a \
            --quiet -q --nomodify -n --help -h' -- "$cur" ) )
    fi

} &&
complete -F _clone_member clone_member

have sync_members &&
_sync_members()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    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 -n --welcome-msg -w \
            --goodbye-msg -g --digest -d --notifyadmin -a -f --file -h --help' \
            -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _sync_members sync_members

have unshunt &&
_unshunt()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-h --help' -- "$cur" ) )
    else
        _filedir -d
    fi

} &&
complete -F _unshunt unshunt

have list_admins &&
_list_admins()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--all-vhost -v --all -a -h --help' \
            -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _list_admins list_admins

have list_owners &&
_list_owners()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-w --with-listnames -m --moderators -h \
            --help' -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _list_owners list_owners

have list_members &&
_list_members()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    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 -o --regular -r --digest -d \
            --nomail -n --fullnames -f --preserve -p -h --help' -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _list_members list_members

have change_pw &&
_change_pw()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    case "$prev" in
        -@(l|-listname))
            _mailman_lists
            return 0
            ;;
    esac

    $split && return 0

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-a --all --domain -d --listname -l \
            --password -p --quiet -q -h --help' -- "$cur" ) )
    fi

} &&
complete -F _change_pw change_pw

have withlist &&
_withlist()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-l --lock -i --interactive \
            -r --run -a --all -q --quiet -h --help' -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _withlist withlist

have newlist &&
_newlist()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-l --language -q --quiet -h --help' \
            -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _newlist newlist

have rmlist &&
_rmlist()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--archives -a -h --help' -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _rmlist rmlist

have config_list &&
_config_list()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    case "$prev" in
        -@(i|o|-inputfile|-outputfile))
            _filedir
            return 0
            ;;
    esac

    $split && return 0

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--inputfile -i --outputfile -o \
            --checkonly -c --verbose -v -h --help' -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _config_list $filenames config_list

have arch &&
_arch()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    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 -s --start -e --end -q --quiet -h \
            --help' -- "$cur" ) )
    else
        args=$COMP_CWORD
        for (( i=1; i < COMP_CWORD; i++ )); do
            if [[ "${COMP_WORDS[i]}" == -* ]]; then
                args=$(($args-1))
            fi
        done
        case $args in
            1)
                _mailman_lists
                ;;
            2)
                _filedir
                ;;
        esac
    fi

} &&
complete -F _arch $filenames arch

have cleanarch &&
_cleanarch()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-s --status -n --dry-run -q --quiet -h \
            --help' -- "$cur" ) )
    fi

} &&
complete -F _cleanarch cleanarch

have inject &&
_inject()
{
    local cur prev split=false

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && split=true

    case "$prev" in
        -@(l|-listname))
            _mailman_lists
            return 0
            ;;
    esac

    $split && return 0

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-l --listname -q --queue -h --help' \
            -- "$cur" ) )
    else
        _filedir
    fi

} &&
complete -F _inject $filenames inject

have dumpdb &&
_dumpdb()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--marshal -m --pickle -p --noprint -n -h \
            --help' -- "$cur" ) )
    else
        _filedir
    fi

} &&
complete -F _dumpdb $filenames dumpdb

have check_db &&
_check_db()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--all -a --verbose -v -h --help' \
            -- "$cur" ) )
    else
        _mailman_lists
    fi

} &&
complete -F _check_db check_db

have check_perms &&
_check_perms()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-f -v -h' -- "$cur" ) )
    fi

} &&
complete -F _check_perms check_perms

have genaliases &&
_genaliases()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-q --quiet -h --help' -- "$cur" ) )
    fi

} &&
complete -F _genaliases genaliases

have mmsitepass &&
_mmsitepass()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-c --listcreator -h --help' -- "$cur" ) )
    fi

} &&
complete -F _mmsitepass mmsitepass

have qrunner &&
_qrunner()
{
    local cur prev

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}

    _split_longopt && return 0

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-r --runner --once -o \
            -l --list -v --verbose -s --subproc -h --help' -- "$cur" ) )
    fi

} &&
complete -F _qrunner qrunner

have mailmanctl &&
_mailmanctl()
{
    local cur

    COMPREPLY=()
    cur=`_get_cword`

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-n --no-restart -u --run-as-user \
            -s --stale-lock-cleanup --quiet -q -h --help' -- "$cur" ) )
    else
        COMPREPLY=( $( compgen -W 'start stop restart reopen' -- "$cur" ) )
    fi

} &&
complete -F _mailmanctl mailmanctl

# 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
