# Linux Vulnerability Mitigation
# Copyright (C) 2026 Daniel Baumann <daniel@debian.org>
#
# SPDX-License-Identifier: PD
#
# This program is free software: you have unlimited permission
# to copy, distribute and modify it.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

_linux_vulnerability_mitigation ()
{
	local cur prev cmd opts
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"

	if [ ${COMP_CWORD} -gt 0 ]
	then
		cmd="${COMP_WORDS[1]}"
	fi

	if [ "${prev}" = "--" ]
	then
		compopt -o bashdefault
		COMPREPLY=( $(compgen -c -- $cur) )
		return 0
	fi

	case "${cmd}" in
		auto)
			opts="-f --force -i --install -r --remove -h --help"
			COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
			return 0
			;;

		check|install|remove|status)
			case "${prev}" in
				-m|--mitigations)
					opts="$(cd /usr/share/linux-vulnerability-mitigation/mitigations && ls 2>/dev/null) ALL"
					COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
					return 0
					;;

				*)
					opts="-m --mitigations -h --help"
					COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
					return 0
					;;
			esac
			;;

		help|version)
			opts="-h --help"
			COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
			return 0
			;;

		*)
			local commands=$(cd /usr/libexec/linux-vulnerability-mitigation 2>/dev/null && ls 2>/dev/null)
			COMPREPLY=( $(compgen -W "${commands}" -- ${cur}) )
			return 0
			;;
	esac

	compopt -o filenames
	COMPREPLY=( $(compgen -f -- $cur) )
	return 0
}

complete -F _linux_vulnerability_mitigation linux-vulnerability-mitigation
