84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#/usr/bin/env bash
 | 
						|
 | 
						|
_kazList_completions () {
 | 
						|
    #KAZ_ROOT=$(cd "$(dirname ${COMP_WORDS[0]})"/..; pwd)
 | 
						|
    COMPREPLY=()
 | 
						|
    local cword=${COMP_CWORD} cur=${COMP_WORDS[COMP_CWORD]} card=${#COMP_WORDS[@]} i w skip=0
 | 
						|
    for ((i=1 ; i<cword; i++)) ; do
 | 
						|
	w="${COMP_WORDS[i]}"
 | 
						|
        [[ "${w}" == -* ]] && ((skip++))
 | 
						|
    done
 | 
						|
    local arg_pos w i cmd= opt= names=
 | 
						|
    ((arg_pos = cword - skip))
 | 
						|
    for ((i=1 ; i<card; i++)); do
 | 
						|
	w="${COMP_WORDS[i]}"
 | 
						|
	if [ -z "${cmd}" ]; then
 | 
						|
	    [[ "${w}" == -* ]] || cmd="${w}"
 | 
						|
	    continue
 | 
						|
	fi
 | 
						|
	if [ -z "${opt}" ]; then
 | 
						|
	    [[ "${w}" == -* ]] || opt="${w}"
 | 
						|
	    continue
 | 
						|
	fi
 | 
						|
	names="${names} ${w}"
 | 
						|
    done
 | 
						|
    #(echo "A cword:${cword} / arg_pos:${arg_pos} / card:${card} / cur:${cur} / cmd:${cmd} / opt:${opt} / names:${names} " >> /dev/pts/1)
 | 
						|
 | 
						|
    case "${cur}" in
 | 
						|
	-*)
 | 
						|
	    COMPREPLY=($(compgen -W "-h --help" -- "${cur}"))
 | 
						|
	    ;;
 | 
						|
	*)
 | 
						|
	    local cmd_available="compose service"
 | 
						|
	    local opt_available="available validate enable disable status"
 | 
						|
	    case "${arg_pos}" in
 | 
						|
		1)
 | 
						|
		    # $1 of kazList.sh
 | 
						|
		    COMPREPLY=($(compgen -W "${cmd_available}" -- "${cur}"))
 | 
						|
		    ;;
 | 
						|
		2)
 | 
						|
		    # $2 of kazList.sh
 | 
						|
		    COMPREPLY=($(compgen -W "${opt_available}" -- "${cur}"))
 | 
						|
		    ;;
 | 
						|
		*)
 | 
						|
		    # $3-* of kazList.sh
 | 
						|
		    [[ " ${cmd_available} " =~ " ${cmd} " ]] || return 0
 | 
						|
		    # select set of names
 | 
						|
		    local names_set="${opt}"
 | 
						|
		    local available_args
 | 
						|
		    case "${cmd}" in
 | 
						|
			service)
 | 
						|
			    case "${names_set}" in
 | 
						|
				available|validate)
 | 
						|
				    return 0
 | 
						|
				    ;;
 | 
						|
				*)
 | 
						|
				    available_args=$("${COMP_WORDS[0]}" "compose" "enable" "orga" 2>/dev/null)
 | 
						|
				    ;;
 | 
						|
			    esac
 | 
						|
			    ;;
 | 
						|
			compose)
 | 
						|
			    case "${names_set}" in
 | 
						|
				validate|enable|disable)
 | 
						|
				    ;;
 | 
						|
			   	*)
 | 
						|
				    names_set="available"
 | 
						|
				    ;;
 | 
						|
			    esac
 | 
						|
			    available_args=$("${COMP_WORDS[0]}" "${cmd}" "${names_set}")
 | 
						|
			    ;;
 | 
						|
		    esac
 | 
						|
		    # remove previous selected target
 | 
						|
		    local proposal item
 | 
						|
		    for item in ${available_args} ; do
 | 
						|
			[[ " ${names} " =~ " ${item} " ]] || proposal="${proposal} ${item}"
 | 
						|
		    done
 | 
						|
		    COMPREPLY=($(compgen -W "${proposal}" -- "${cur}"))
 | 
						|
		    ;;
 | 
						|
	    esac
 | 
						|
    esac
 | 
						|
    return 0
 | 
						|
}
 | 
						|
 | 
						|
complete -F _kazList_completions kazList.sh
 |