# Programmable completion for Plowshare commands under bash 3.x
# Copy this file to /etc/bash_completion.d/plowshare

have plowup &&
_plowup()
{
    local cur prev arg
    COMPREPLY=()

    # fix colon separator issue. See item E13 at http://tiswww.case.edu/php/chet/bash/FAQ
    COMP_WORDBREAKS=${COMP_WORDBREAKS//:}

    cur=`_get_cword`
    prev=`_get_pword`

    case "$prev" in
        -v)
            COMPREPLY=( $( compgen -W '0 1 2 3 4' -- $cur ) )
            return 0
            ;;
        -i|--interface)
            _available_interfaces -a
            return 0
            ;;
        -a|-b|-d|-p|--auth|--description|--link-password|--name-prefix|--name-suffix|--min-rate|--max-rate|-r|--max-retries|-t|--timeout|--printf)
            # argument required but no completion available
            return 0
            ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--help --version --quiet \
            -v -q -i -r -t \
            --min-rate --max-rate --interface --max-retries --timeout --name-prefix --name-suffix \
            --printf --no-curlrc --no-plowsharerc' -- $cur ) )
    else
        local m list
        list=$(sed -ne '/^[^#].*|[[:space:]]*upload[[:space:]]*|/p' \
            /usr/share/plowshare4/modules/config | cut -d'|' -f1)

        # check for already given module name
        # note: _get_first_arg is not accurate enough (option with argument)
        for m in $list; do
            for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do
                if [ "${COMP_WORDS[i]}" == $m ]; then
                    _filedir
                    return 0
                fi
            done
        done

        COMPREPLY=( $(compgen -W "$list" -- $cur ) )
    fi
} &&
complete -F _plowup plowup

have plowdown &&
_plowdown()
{
    local cur prev

    COMPREPLY=()
    cur=`_get_cword`
    prev=`_get_pword`

    case "$prev" in
        -v)
            COMPREPLY=( $( compgen -W '0 1 2 3 4' -- $cur ) )
            return 0
            ;;
        -a|-b|-p|--auth-free|--auth|--link-password|--9kweu|--antigate|--captchabhood|--deathbycaptcha|--max-rate|-r|--max-retries|-t|--timeout|--printf|--exec)
            # argument required but no completion available
            return 0
            ;;
        -o|--output-directory|--temp-directory)
            _filedir -d
            return 0
            ;;
        -i|--interface)
            _available_interfaces -a
            return 0
            ;;
        --captchamethod)
            COMPREPLY=( $( compgen -W 'imgur none nox online prompt' -- $cur ) )
            return 0
            ;;
        --captchaprogram)
            # empty for now
            return 0
            ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--help --version --quiet \
            -v -q -i -o -m -r -t -x \
            --max-rate --interface --check-link --mark-downloaded --no-overwrite \
            --output-directory --temp-directory --temp-rename --timeout --max-retries \
            --fallback --9kweu --antigate --captchabhood --deathbycaptcha \
            --captchamethod --captchaprogram --printf --exec --no-curlrc --no-plowsharerc' -- $cur ) )
    else
        _filedir
    fi
} &&
complete -F _plowdown plowdown

have plowdel &&
_plowdel()
{
    local cur prev

    COMPREPLY=()
    cur=`_get_cword`
    prev=`_get_pword`

    case "$prev" in
        -v)
            COMPREPLY=( $( compgen -W '0 1 2 3 4' -- $cur ) )
            return 0
            ;;
        -a)
            # argument required but no completion available
            return 0
            ;;
        -i|--interface)
            _available_interfaces -a
            return 0
            ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--help --version --quiet \
            -v -q -i --interface --no-plowsharerc' -- $cur ) )
    else
        # URL pattern expected
        _filedir
    fi
} &&
complete -F _plowdel plowdel

have plowlist &&
_plowlist()
{
    local cur prev

    COMPREPLY=()
    cur=`_get_cword`
    prev=`_get_pword`

    case "$prev" in
        -v)
            COMPREPLY=( $( compgen -W '0 1 2 3 4' -- $cur ) )
            return 0
            ;;
        -p|--printf)
            # argument required but no completion available
            return 0
            ;;
        -i|--interface)
            _available_interfaces -a
            return 0
            ;;
    esac

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '--help --version --quiet \
            -v -q -i -R --interface --printf --recursive --fallback --no-plowsharerc' -- $cur ) )
    else
        # URL pattern expected
        _filedir
    fi
} &&
complete -F _plowlist plowlist

# ex: ts=4 sw=4 et filetype=sh
