# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
# ex: ts=8 sw=8 noet filetype=sh
#
# bash completion for cpio

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

_cpio()
{
	local cur prev split=false

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

	_split_longopt && split=true

	# --name value style option
	case $prev in
		-H|--format)
			_cpio_format
			return 0
			;;
		-@(E|F|I|-?(pattern-)file))
			_filedir
			return 0
			;;
		-R|--owner)
			_usergroup
			return 0
			;;
		--rsh-command)
			COMPREPLY=( $( compgen -c -- $cur ) )
			return 0
			;;
	esac

	$split && return 0

	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
}
complete -F _cpio cpio
}
