38 lines
1.2 KiB
Bash
38 lines
1.2 KiB
Bash
|
# ex: filetype=sh
|
||
|
# shellcheck disable=SC2207
|
||
|
_pt_completions()
|
||
|
{
|
||
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||
|
local prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||
|
COMPREPLY=($(compgen -W '-debug -c -config -help' -- "$cur"))
|
||
|
case "$prev" in
|
||
|
-c|-config)
|
||
|
COMPREPLY+=($(compgen -f -- "$cur"))
|
||
|
;;
|
||
|
-l|-label)
|
||
|
if [[ ${COMP_WORDS[*]} =~ start ]]; then
|
||
|
COMPREPLY+=($(compgen -W "$(./pt labels)" -- "$cur"))
|
||
|
fi
|
||
|
;;
|
||
|
*)
|
||
|
local words=($(./pt ls -o brief) start stop signal)
|
||
|
if [[ ${words[*]} =~ $prev ]]; then
|
||
|
COMPREPLY+=($(compgen -W "$(./pt ls -o brief)" -- "$cur"))
|
||
|
fi
|
||
|
local commands='start stop ls ps help version signal labels'
|
||
|
local invoked=()
|
||
|
for comm in $commands; do
|
||
|
if [[ ${COMP_WORDS[*]} =~ $comm ]]; then
|
||
|
invoked+=("$comm")
|
||
|
fi
|
||
|
done
|
||
|
# Do not complete commands if any command is already invoked
|
||
|
if [[ "${#invoked[@]}" == 0 ]]; then
|
||
|
COMPREPLY+=($(compgen -W "$commands" -- "$cur"))
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
complete -o filenames -F _pt_completions pt
|