package cli

const (
	bashCompletionFunc = `# call osc get $1,
__osc_parse_get()
{

    local template
    template="{{ range .items  }}{{ .metadata.name }} {{ end }}"
    local osc_out
    if osc_out=$(osc get -o template --template="${template}" "$1" 2>/dev/null); then
        COMPREPLY=( $( compgen -W "${osc_out[*]}" -- "$cur" ) )
    fi
}

__osc_get_resource()
{
    if [[ ${#nouns[@]} -eq 0 ]]; then
        return 1
    fi
    __osc_parse_get ${nouns[${#nouns[@]} -1]}
}

# $1 is the name of the pod we want to get the list of containers inside
__osc_get_containers()
{
    local template
    template="{{ range .spec.containers  }}{{ .name }} {{ end }}"
    __debug ${FUNCNAME} "nouns are ${nouns[@]}"

    local len="${#nouns[@]}"
    if [[ ${len} -ne 1 ]]; then
        return
    fi
    local last=${nouns[${len} -1]}
    local osc_out
    if osc_out=$(osc get -o template --template="${template}" pods "${last}" 2>/dev/null); then
        COMPREPLY=( $( compgen -W "${osc_out[*]}" -- "$cur" ) )
    fi
}

# Require both a pod and a container to be specified
__osc_require_pod_and_container()
{
    if [[ ${#nouns[@]} -eq 0 ]]; then
        __osc_parse_get pods
        return 0
    fi;
    __osc_get_containers
    return 0
}

__custom_func() {
    case ${last_command} in
        osc_get | osc_describe | osc_delete)
	    __osc_get_resource
            return
            ;;
	osc_log)
	    __osc_require_pod_and_container
	    return
	    ;;
        *)
            ;;
    esac
}
`
)