first commit
This commit is contained in:
63
bin/.orga-gen-completion.bash
Executable file
63
bin/.orga-gen-completion.bash
Executable file
@ -0,0 +1,63 @@
|
||||
#/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
|
Reference in New Issue
Block a user