#!/usr/bin/env bash

# Completion for summon
#
# Copyright (c) 2015 Conjur Inc
# See LICENSE

_summon()
{
    local cur prev opts;
    _init_completion || return;
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts_long=( provider yaml ignore help version )
    opts="-p -f -D -i -h -v ${opts_long[@]/#/--}"

    local cmd_start;
    for ((cmd_start=1; cmd_start <= COMP_CWORD; cmd_start++ ))
    do
        if [[ "${COMP_WORDS[cmd_start]}" != -* ]]; then
            local root_command=${COMP_WORDS[cmd_start]};
            _command_offset $cmd_start;
            return;
        fi;
        [[ ${COMP_WORDS[cmd_start]} == -* ]] && ((cmd_start++));
    done;
    
    case "$prev" in
        -p | --provider)
            local provider_dir=/usr/libexec/summon
            if ! [ -e $provider_dir ]; then return; fi;
            local providers=$( find $provider_dir \
                                    -maxdepth 1 \
                                    -type f \
                                    -executable \
                                    -printf "%f " );
            COMPREPLY=( $( compgen -W "$providers" -- ${cur}) )
            return
            ;;
        -f)
            COMPREPLY=( $( compgen -f ${cur}) )
            return
            ;;
        *)
            ;;
    esac

    case "${cur}" in
        -*)
            COMPREPLY=( $( compgen -W "${opts}" -- ${cur}) )
            return
            ;;
        *)
            return
            ;;
    esac
}
complete -F _summon summon
