# cpio(1) completion

comp_include _filedir _get_cword _usergroup

_cpio_format()
{
    COMPREPLY=( $( compgen -W 'bin odc newc crc tar ustar hpbin hpodc' -- $cur ) )
}

_cpio()
{
    local cur

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

    # --name value style option
    case $prev in
        -H)
            _cpio_format
            return 0
            ;;
        -@(E|F|I))
            _filedir
            return 0
            ;;
        -R)
            _usergroup
            return 0
            ;;
    esac

    # --name=value style option
    if [[ "$cur" == *=* ]]; then
        prev=${cur/=*/}
        cur=${cur/*=/}
        case $prev in
            --format)
                _cpio_format
                return 0
                ;;
            --@(file|pattern-file))
                _filedir
                return 0
                ;;
            --owner)
                _usergroup
                return 0
                ;;
            --rsh-command)
                COMPREPLY=( $( compgen -c -- $cur ) )
                return 0
                ;;
        esac
    fi

    if [ $COMP_CWORD -eq 1 ]; then
        COMPREPLY=( $( compgen -W '-o --create -i --extract -p --pass-through' -- $cur) ) 
    else
        case ${COMP_WORDS[1]} in
            -@(o|-create))
                if [[ "$cur" == -* ]]; then
                    COMPREPLY=( $( compgen -W '-0 -a -c -v -A -B\
                        -L -V -C -H -M -O -F --file= --format=\
                        --message= --null --reset-access-time\
                        --verbose --dot --append --block-size=\
                        --dereference --io-size= --quiet\
                        --force-local --rsh-command= --help\
                        --version' -- $cur ) )
                fi
                ;;
            -@(i|-extract))
                if [[ "$cur" == -* ]]; then
                    COMPREPLY=( $( compgen -W '-b -c -d -f -m -n -r\
                        -t -s -u -v -B -S -V -C -E -H -M -R -I\
                        -F --file= --make-directories\
                        --nonmatching\
                        --preserve-modification-time\
                        --numeric-uid-gid --rename -t --list\
                        --swap-bytes --swap --dot\
                        --unconditional --verbose --block-size=\
                        --swap-halfwords --io-size=\
                        --pattern-file= --format= --owner=\
                        --no-preserve-owner --message=\
                        --force-local --no-absolute-filenames\
                        --sparse --only-verify-crc --quiet\
                        --rsh-command= --help\
                        --version' -- $cur ) )
                fi
                ;;
            -@(p|-pass-through))
                if [[ "$cur" == -* ]]; then
                    COMPREPLY=( $( compgen -W '-0 -a -d -l -m -u -v\
                        -L -V -R --null --reset-access-time\
                        --make-directories --link --quiet\
                        --preserve-modification-time\
                        --unconditional --verbose --dot\
                        --dereference --owner=\
                        --no-preserve-owner --sparse --help\
                        --version' -- $cur ) )
                else
                    _filedir -d
                fi
                ;;
        esac
    fi
} # _cpio()


