_rake()
{
    local cur prev rakef i

    COMPREPLY=()
    cur=${COMP_WORDS[COMP_CWORD]}
    prev=${COMP_WORDS[COMP_CWORD-1]}
    rakef="Rakefile"

    if [[ "$prev" == "-f" ]]; then
        _filedir
        return 0
    fi

    if [[ "$cur" == *=* ]]; then
        prev=${cur/=*/}
        cur=${cur/*=/}
        if [[ "$prev" == "--rakefile=" ]]; then
            _filedir -o nospace
            return 0
        fi
    fi

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-n -H -I -N -P -q -f\
            -r -s -T -t -h -v -V\
            --dry-run --help '--libdir=' --nosearch --prereqs --quiet\
            '--rakefile=' '--require=' --silent --tasks --trace --usage\
            --verbose --version'\
            -- $cur ))
    else

        for (( i=0; i < ${#COMP_WORDS[@]}; i++)); do
            case "${COMP_WORDS[i]}" in
            -f)
                eval rakef=${COMP_WORDS[i+1]}
                break
                ;;
            --rakefile=*|--rakefile\=*)
                eval rakef=${COMP_WORDS[i]/*=/}
                break
                ;;
            esac
        done

        [ ! -f $rakef ] && return 0

        COMPREPLY=( $( rake -s -f "$rakef" -T | \
            awk -F ' ' '/^rake / { print $2 }' | \
            command grep "^$cur" ))

    fi
} &&
complete -F _rake $filenames rake
