# service completions

_vs_cmds() {
  echo -e "help\nrestart\nreboot\ncad\nshutdown\nstart"
  echo -e "rename\nmigrate\nmove\nsave\nfix"
  echo -e "list\ninfo\nii\nedit\nset\nconsole\ndiff\ndestroy\nreset\nkill"
  echo -e "install\ndefine\nmagic\nbackup"
  echo -e "pool-list\npool-start\npool-destroy"
  echo -e "attach-disk\ndetach-disk\nresize-disk\ndd"
}

_vs_guest_list() {
  virsh list --all --name
  echo "$@"
}

_vs() {
	COMPREPLY=()
	cur=${COMP_WORDS[COMP_CWORD]}
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	if [ "${COMP_CWORD}" = "1" ]; then
		COMPREPLY=( $(compgen -W "$(_vs_cmds)" -- $cur) )
		return 0
	fi
	case "${COMP_WORDS[1]}" in
		start|stop|restart|reboot|cad|shutdown|migrate|move|save|edit|console|con|c|diff|destroy|reset|kill|magic|backup|rename|fix)
                        COMPREPLY=( $(compgen -W "$(_vs_guest_list)" -- $cur) )
			return 0
			;;
		set)
			if [ "$COMP_CWORD" = "2" ]; then
				COMPREPLY=( $(compgen -W "mem cpu boot" -- $cur) )
			elif [ "$COMP_CWORD" = "3" ]; then
	                        COMPREPLY=( $(compgen -W "$(_vs_guest_list)" -- $cur) )
	                fi
			return 0
			;;
		list|l)
			COMPREPLY=(--all)
			return 0
			;;
		info|i|ii)
			COMPREPLY=( $(compgen -W "$(_vs_guest_list) --all --brief" -- $cur) )
			return 0
			;;
		install)
			if [ "$prev" = "-n" ]; then
				bridges="$(ls -d /sys/class/net/*/bridge | cut -d/ -f5)"
				COMPREPLY=( $(compgen -W "$bridges" -- $cur) )
			else
				COMPREPLY=( $(compgen -f -- $cur) )
			fi
			return 0
			;;
		attach-disk)
			if [ "$COMP_CWORD" = "2" ]; then
				COMPREPLY=( $(compgen -W "$(_vs_guest_list)" -- $cur) )
			elif [ "$COMP_CWORD" = "3" ]; then
				COMPREPLY=( $(compgen -f -- $cur) )
			elif [ "$COMP_CWORD" = "4" ]; then
				COMPREPLY=( $(compgen -W "vda vdb vdc vdd vde vdf" -- $cur) )
			fi
			return 0
			;;
		detach-disk)
			if [ "$COMP_CWORD" = "2" ]; then
				COMPREPLY=( $(compgen -W "$(_vs_guest_list)" -- $cur) )
			elif [ "$COMP_CWORD" = "3" ]; then
				COMPREPLY=( $(compgen -W "vda vdb vdc vdd vde vdf" -- $cur) )
			fi
			return 0
			;;
		resize-disk)
			if [ "$COMP_CWORD" = "2" ]; then
				COMPREPLY=( $(compgen -W "$(_vs_guest_list)" -- $cur) )
			elif [ "$COMP_CWORD" = "3" ]; then
				COMPREPLY=( $(compgen -f -- $cur) )
			fi
			return 0
			;;
		dd)
                        COMPREPLY=( $(compgen -f -- $cur) )
			return 0
			;;
		define)
			COMPREPLY=( $(compgen -f -- $cur) )
			return 0
			;;
	esac
}
complete -o filenames -F _vs vs
