1
0
mirror of https://github.com/MatMoul/g810-led.git synced 2024-12-23 17:26:11 +00:00

ADDED: bash completion

This commit is contained in:
Bernd Schatz 2020-03-29 19:47:02 +02:00
parent 84e01e1a80
commit 055bc28640

View File

@ -0,0 +1,115 @@
#/usr/bin/env bash
# OPTIONS
# #######
g810_device_options="-dv -dp -ds -tuk"
g810_tuk_option="-tuk"
g810_tuk_options="1 2 3"
g810_options="$g810_device_options g810_tuk_option"
# COMMANDS
# ########
# effects
effects_command="-fx"
effects="color breathing cycle waves hwave vwave cwave"
effects_target="all keys logo"
# startup mode
startup_mode_command="--startup-mode"
startup_modes="wave color"
# keygroup commands
key_group_commands="-g -gn"
key_groups="logo indicators fkeys gkeys modifiers multimedia arrows numeric functions keys"
# g810 commands and options
simple_long_commands="--list-keyboards --print-device --help --help-keys --help-effects --help-samples"
# ALL
# ########
all="-a -k -an -kn -c $startup_mode_command $simple_long_commands $g810_options $key_group_commands"
_g810-led_completions()
{
# ignore already typed in g810 options
# TODO check for parameter, and avoid duplicated options
# ######################################################
local i=1
while [[ $g810_options =~ ${COMP_WORDS[i]} && ${COMP_CWORD} -gt $i ]]
do
((i++))
done
# check for simple long commands, that dont have parameters
# #########################################################
local contains=0
local exactmatch=0
local opt
for opt in $simple_long_commands
do
if [[ $opt =~ "${COMP_WORDS[i]}" ]]; then let contains=contains+1; fi
if [[ $opt == "${COMP_WORDS[i]}" ]]; then let exactmatch=exactmatch+1; fi
done
if [[ $contains -eq 1 && $exactmatch -eq 1 ]]; then return; fi;
# long commands with parameter
# ############################
# --> startup mode
if [[ $startup_mode_command == "${COMP_WORDS[i]}" ]]
then
((i++))
if [[ " $startup_modes " =~ " ${COMP_WORDS[i]} " ]]
then
return;
else
COMPREPLY=($(compgen -W "$startup_modes" -- ${COMP_WORDS[i]}))
return
fi
fi
# --> effects
if [[ $effects_command == "${COMP_WORDS[i]}" ]]
then
((i++))
if [[ " $effects " =~ " ${COMP_WORDS[i]} " ]]
then
((i++))
if [[ " $effects_target " =~ " ${COMP_WORDS[i]} " ]]
then
return
else
COMPREPLY=($(compgen -W "$string" -- "${COMP_WORDS[i]}" ))
return
fi
else
COMPREPLY=($(compgen -W "$effects" -- "${COMP_WORDS[i]}" ))
return
fi
fi
# commands with keygroups
# #######################
if [[ " $key_group_commands " =~ " ${COMP_WORDS[i]} " ]]
then
((i++))
if [[ " $key_groups " =~ " ${COMP_WORDS[i]} " ]]
then
return
else
COMPREPLY=($(compgen -W "$key_groups" -- ${COMP_WORDS[i]}))
return
fi
fi
# complete
# ########
COMPREPLY=($(compgen -W "$all" -- ${COMP_WORDS[i]}))
return
}
complete -F _g810-led_completions g810-led