# youri tools completion
# $Id$

_youri-check()
{

    local cur prev config i mode

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

    case "$prev" in
	--config)
	    _filedir
	    return 0
	    ;;
	--skip-plugin)
	    _find_config check.conf
	    if [ -n "$config" ]; then
		# try to guess mode
		for (( i=1; i < COMP_CWORD; i++ )); do
		    if [[ "${COMP_WORDS[i]}" != -* ]]; then
			mode=${COMP_WORDS[i]}
			break
		    fi
		done

		if [ -n $mode ]; then
		    COMPREPLY=( $( awk -F=  '/^'$mode's/ {print $2}' $config \
			    | grep "^$cur" ) )
		fi
	    fi
	    return 0
	    ;;
	--skip-media)
	    _find_config check.conf
	    if [ -n "$config" ]; then
		COMPREPLY=( $( awk -F=  '/^medias/ {print $2}' $config \
			| grep "^$cur" ) )
	    fi
	    return 0
	    ;;
    esac

    if [[ "$cur" == -* ]]; then
	COMPREPLY=( $( compgen -W '--config --skip-plugin --skip-media -h \
		--help -t --test -v --verbose' -- $cur ) )
    else
    	_count_args
	case $args in
	    1)
	    	COMPREPLY=( $( compgen -W 'input output' -- $cur ) )
		;;
	esac
    fi

}
complete -F _youri-check youri-check

_youri-upload()
{

    local cur prev config

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

    case "$prev" in
	--config)
	    _filedir
	    return 0
	    ;;
	--skip-check)
	    _find_config upload.conf
	    if [ -n "$config" ]; then
		COMPREPLY=( $( awk -F=  '/^checks/ {print $2}' $config \
		    | grep "^$cur" ) )
	    fi
	    return 0
	    ;;
	--skip-action)
	    _find_config upload.conf
	    if [ -n "$config" ]; then
		COMPREPLY=( $( awk -F=  '/^actions/ {print $2}' $config \
		    | grep "^$cur" ) )
	    fi
	    return 0
	    ;;
    esac

    if [[ "$cur" == -* ]]; then
	COMPREPLY=( $( compgen -W '--config --skip-check --skip-action \
	    --define -h --help -t --test -v --verbose' -- $cur ) )
    else
    	_count_args
	case $args in
	    1)
		_find_config upload.conf
		if [ -n "$config" ]; then
		    COMPREPLY=( $( awk -F=  '/^targets/ {print $2}' $config \
			| grep "^$cur" ) )
		fi
		;;
	    *)
		_filedir
		;;
	esac
    fi

}
complete -F _youri-upload youri-upload

_find_config()
{
    local name i

    name=$1

    for (( i=1; i < COMP_CWORD; i++ )); do
	if [[ "${COMP_WORDS[i]}" == --config ]]; then
	    config=${COMP_WORDS[i+1]}
	    break
	fi
    done
    if [ -f "$config" ]; then
	return 0
    fi

    if [ -f "$HOME/.youri/$name" ]; then
	config=$HOME/.youri/$name
	return 0
    fi

    if [ -f "/etc/youri/$name" ]; then
	config=/etc/youri/$name
	return 0
    fi

}
