# dl-distro Bash completions

_dl_compgen()
{
	local i r

	COMPREPLY=($(compgen -W '$*' -- "$cur"))

	for ((i = 1; i < ${#COMP_WORDS[@]} - 1; i++)); do
		for r in ${!COMPREPLY[@]}; do
			if [[ ${COMP_WORDS[i]} == ${COMPREPLY[r]} ]]; then
				unset 'COMPREPLY[r]'
				break
			fi
		done
	done
}

_dl_distro()
{
	local short_opts long_opts distros
	local cur prev words cword

	_init_completion || return

	short_opts=('-a -c -d -D -h -i -l -L -m -n -p -P -s -u -V')
	long_opts=('--auto-update --conf-file --distro --delete-key --help
	            --import-key --list-keys --list-distros --manual-download --no-verify --path
	            --purge-data --spider --update-json --version')
	distros=('alma alpine arch cachy debian deepin dragora endeavour fedora ghostbsd gparted guix
	          hyperbola kali mint mxlinux nix nobara openbsd opensuse parabola parch
	          parrot pop proxmox pure qubes rocky slackware solus tails tinycore
	          trisquel ubuntu void whonix zorin')

	case "$prev" in
		-d|--distro)
			_dl_compgen "$distros"
			;;
		-i|--import-key)
			_filedir
			;;
		-p|--path)
			_filedir -d
			;;
		*)
			if [[ "$cur" == --* ]]; then
				_dl_compgen "$long_opts"
			elif [[ "$cur" == -* ]]; then
				_dl_compgen "$short_opts"
			fi
			;;
	esac
}

complete -F _dl_distro dl-distro

# ex: ft=sh
