2021-03-13 19:04:33 +01:00
# Bash completion script for footclient
_footclient()
{
COMPREPLY=()
local cur prev flags word commands match previous_words i offset
flags=(
"--app-id"
"--fullscreen"
"--help"
"--hold"
"--login-shell"
"--log-level"
"--log-colorize"
"--maximized"
2021-06-23 14:34:50 +02:00
"--override"
2022-04-11 12:31:52 +02:00
"--client-environment"
2021-03-13 19:04:33 +01:00
"--server-socket"
"--term"
"--title"
"--version"
"--window-size-pixels"
"--window-size-chars"
"--working-directory"
)
flags="${flags[@]}"
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
2023-01-10 19:44:24 +00:00
# Check if positional argument is completed
2021-03-13 19:04:33 +01:00
previous_words=( "${COMP_WORDS[@]}" )
unset previous_words[-1]
commands=$(compgen -c | grep -vFx "$(compgen -k)" | grep -vE '^([.:[]|footclient)$' | sort -u)
i=0
for word in "${previous_words[@]}" ; do
match=$(printf "$commands" | grep -Fx "$word" 2>/dev/null)
if [[ ! -z "$match" ]] ; then
if [[ ${COMP_WORDS[i-1]} =~ ^(--app-id|--log-level|--server-socket|--term|--title|--window-size-pixels|--window-size-chars|--working-directory)$ ]] ; then
(( i++ ))
continue
fi
2023-01-10 19:44:24 +00:00
# Positional argument found
2021-03-13 19:04:33 +01:00
offset=$i
fi
(( i++ ))
done
if [[ ! -z "$offset" ]] ; then
2023-01-10 19:44:24 +00:00
# Depends on bash_completion being available
2021-03-13 19:04:33 +01:00
declare -F _command_offset >/dev/null || return 1
_command_offset $offset
2023-01-10 19:44:24 +00:00
return 0
2021-03-13 19:04:33 +01:00
elif [[ ${cur} == --* ]] ; then
COMPREPLY=( $(compgen -W "${flags}" -- ${cur}) )
2023-01-10 19:44:24 +00:00
return 0
2021-03-13 19:04:33 +01:00
fi
2023-01-10 19:44:24 +00:00
case "$prev" in
2023-01-10 19:56:12 +00:00
--server-socket|-s)
2023-01-10 19:44:24 +00:00
compopt -o default ;;
2023-01-10 19:56:12 +00:00
--working-directory|-D)
2023-01-10 19:44:24 +00:00
compopt -o dirnames ;;
2023-01-10 19:56:12 +00:00
--term|-t)
2023-01-10 19:44:24 +00:00
command -v toe > /dev/null || return 1
COMPREPLY=( $(compgen -W "$(toe -a | awk '$1 ~ /[+]/ {next}; {print $1}')" -- ${cur}) ) ;;
2023-01-10 19:56:12 +00:00
--log-level|-d)
2023-01-10 19:44:24 +00:00
COMPREPLY=( $(compgen -W "none error warning info" -- ${cur}) ) ;;
2023-01-10 19:56:12 +00:00
--log-colorize|-l)
2023-01-10 19:44:24 +00:00
COMPREPLY=( $(compgen -W "never always auto" -- ${cur}) ) ;;
2023-01-10 19:56:12 +00:00
--app-id|--help|--override|--title|--version|--window-size-chars|--window-size-pixels|-[ahoTvWw])
2023-01-10 19:44:24 +00:00
# Don't autocomplete for these flags
: ;;
*)
# Complete commands from $PATH
COMPREPLY=( $(compgen -c -- ${cur}) ) ;;
esac
2021-03-13 19:04:33 +01:00
return 0
}
complete -F _footclient footclient