# bash completion for openldap                             -*- shell-script -*-

_ldap_uris()
{
    COMPREPLY=($(compgen -W 'ldap:// ldaps://' -- "$cur"))
}

_ldap_protocols()
{
    COMPREPLY=($(compgen -W '2 3' -- "$cur"))
}

_ldapsearch()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -*h)
            _known_hosts_real -- "$cur"
            return
            ;;
        -*H)
            _ldap_uris
            return
            ;;
        -*T)
            _filedir -d
            return
            ;;
        -*[fy])
            _filedir
            return
            ;;
        -*s)
            COMPREPLY=($(compgen -W 'base one sub children' -- "$cur"))
            return
            ;;
        -*a)
            COMPREPLY=($(compgen -W 'never always search find' -- "$cur"))
            return
            ;;
        -*P)
            _ldap_protocols
            return
            ;;
    esac

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur"))
    fi
} &&
    complete -F _ldapsearch ldapsearch

_ldapaddmodify()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -*h)
            _known_hosts_real -- "$cur"
            return
            ;;
        -*H)
            _ldap_uris
            return
            ;;
        -*[Sfy])
            _filedir
            return
            ;;
        -*P)
            _ldap_protocols
            return
            ;;
    esac

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur"))
    fi
} &&
    complete -F _ldapaddmodify ldapadd ldapmodify

_ldapdelete()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -*h)
            _known_hosts_real -- "$cur"
            return
            ;;
        -*H)
            _ldap_uris
            return
            ;;
        -*[fy])
            _filedir
            return
            ;;
        -*P)
            _ldap_protocols
            return
            ;;
    esac

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur"))
    fi
} &&
    complete -F _ldapdelete ldapdelete

_ldapcompare()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -*h)
            _known_hosts_real -- "$cur"
            return
            ;;
        -*H)
            _ldap_uris
            return
            ;;
        -*y)
            _filedir
            return
            ;;
        -*P)
            _ldap_protocols
            return
            ;;
    esac

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur"))
    fi
} &&
    complete -F _ldapcompare ldapcompare

_ldapmodrdn()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -*h)
            _known_hosts_real -- "$cur"
            return
            ;;
        -*H)
            _ldap_uris
            return
            ;;
        -*[fy])
            _filedir
            return
            ;;
        -*P)
            _ldap_protocols
            return
            ;;
    esac

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1") -ZZ -MM' -- "$cur"))
    fi
} &&
    complete -F _ldapmodrdn ldapmodrdn

_ldapwhoami()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -*h)
            _known_hosts_real -- "$cur"
            return
            ;;
        -*H)
            _ldap_uris
            return
            ;;
        -*[fy])
            _filedir
            return
            ;;
        -*P)
            _ldap_protocols
            return
            ;;
    esac

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur"))
    fi
} &&
    complete -F _ldapwhoami ldapwhoami

_ldappasswd()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -*h)
            _known_hosts_real -- "$cur"
            return
            ;;
        -*H)
            _ldap_uris
            return
            ;;
        -*[tTy])
            _filedir
            return
            ;;
    esac

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1") -MM -ZZ' -- "$cur"))
    fi
} &&
    complete -F _ldappasswd ldappasswd

# ex: filetype=sh
