64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#/usr/bin/env bash
 | 
						|
 | 
						|
_orga_gen_completion () {
 | 
						|
    KAZ_ROOT=$(cd "$(dirname ${COMP_WORDS[0]})"/../..; pwd)
 | 
						|
    ORGA_DIR=$(cd "$(dirname ${COMP_WORDS[0]})"; basename $(pwd))
 | 
						|
    COMPREPLY=()
 | 
						|
    . "${KAZ_ROOT}/bin/.commonFunctions.sh"
 | 
						|
    setKazVars
 | 
						|
    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++))
 | 
						|
        [[ "${w}" == +* ]] && ((skip++))
 | 
						|
    done
 | 
						|
    local arg_pos w i addOpt= rmOpt= names=
 | 
						|
    ((arg_pos = cword - skip))
 | 
						|
    for ((i=1 ; i<card; i++)) ; do
 | 
						|
	w="${COMP_WORDS[i]}"
 | 
						|
	if [[ "${w}" == -* ]]; then
 | 
						|
	    rmOpt="${rmOpt} ${w}"
 | 
						|
	    continue
 | 
						|
	fi
 | 
						|
	if [[ "${w}" == '+'* ]]; then
 | 
						|
	    addOpt="${addOpt} ${w}"
 | 
						|
	    continue
 | 
						|
	fi
 | 
						|
	names="${names} ${w}"
 | 
						|
    done
 | 
						|
    local KAZ_LIST="${KAZ_BIN_DIR}/kazList.sh"
 | 
						|
    case "$cur" in
 | 
						|
	-*)
 | 
						|
	    local available_services item proposal="-h -l" listOpt="available"
 | 
						|
	    [ -n "${names}" ] && listOpt="enable ${names}"
 | 
						|
	    [[ "${ORGA_DIR}" = "orgaTmpl" ]] || listOpt="enable ${ORGA_DIR%-orga}"
 | 
						|
	    available_services=$("${KAZ_LIST}" service ${listOpt} 2>/dev/null | tr ' ' '\n' | sed "s/\(..*\)/-\1/")
 | 
						|
	    for item in ${available_services} ; do
 | 
						|
		[[ " ${rmOpt} " =~ " ${item} " ]] || proposal="${proposal} ${item}"
 | 
						|
	    done
 | 
						|
	    COMPREPLY=( $(compgen -W "${proposal}" -- "${cur}" ) )
 | 
						|
	    ;;
 | 
						|
	'+'*)
 | 
						|
	    local available_services item proposal= listOpt="available"
 | 
						|
	    [ -n "${names}" ] && listOpt="disable ${names}"
 | 
						|
	    [[ "${ORGA_DIR}" = "orgaTmpl" ]] || listOpt="disable ${ORGA_DIR%-orga}"
 | 
						|
	    available_services=$("${KAZ_LIST}" service ${listOpt} 2>/dev/null | tr ' ' '\n' | sed "s/\(..*\)/+\1/")
 | 
						|
	    for item in ${available_services} ; do
 | 
						|
		[[ " ${addOpt} " =~ " ${item} " ]] || proposal="${proposal} ${item}"
 | 
						|
	    done
 | 
						|
	    COMPREPLY=( $(compgen -W "${proposal}" -- "${cur}" ) )
 | 
						|
	    ;;
 | 
						|
	*)
 | 
						|
	    [[ "${ORGA_DIR}" = "orgaTmpl" ]] || return 0;
 | 
						|
	    local available_orga=$("${KAZ_LIST}" "compose" "enable" "orga" 2>/dev/null | sed "s/-orga\b//g")
 | 
						|
	    local proposal= item
 | 
						|
	    for item in ${available_orga} ; do
 | 
						|
		[[ " ${names} " =~ " ${item} " ]] || proposal="${proposal} ${item}"
 | 
						|
	    done
 | 
						|
	    COMPREPLY=($(compgen -W "${proposal}" -- "${cur}"))
 | 
						|
	    ;;
 | 
						|
    esac
 | 
						|
    return 0
 | 
						|
}
 | 
						|
complete -F _orga_gen_completion orga-gen.sh
 |