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

have xmllint &&
_xmllint()
{
	local cur prev

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

	case "$prev" in
		-o|--output)
			_filedir
			return 0
			;;
		--path|--dtdvalidfpi|--maxmem|--encode|--pattern)
			# argument required but no completions available
			return 0
			;;
		--dtdvalid)
			_filedir dtd
			return 0
			;;
		--relaxng)
			_filedir rng
			return 0
			;;
		--schema)
			_filedir xsd
			return 0
			;;
		--schematron)
			_filedir sch
			return 0
			;;
	esac

	if [[ "$cur" == -* ]]; then
		COMPREPLY=( $( compgen -W '$( xmllint --help 2>&1 | \
			sed -ne "s/^[[:space:]]*\(--[^[:space:]:]*\).*/\1/p" ) \
			-o' -- $cur ) )
		return 0
	fi

	_filedir '@(*ml|htm|svg)'
} &&
complete -F _xmllint $filenames xmllint
