Files
task/completion/bash/task.bash

49 lines
1.2 KiB
Bash
Raw Normal View History

2022-08-11 20:48:41 +02:00
# vim: set tabstop=4 shiftwidth=4 expandtab:
2022-08-11 20:48:41 +02:00
_GO_TASK_COMPLETION_LIST_OPTION='--list-all'
2022-08-11 20:48:41 +02:00
function _task()
{
2022-08-11 20:48:41 +02:00
local cur prev words cword
_init_completion -n : || return
2022-08-11 20:48:41 +02:00
# Handle special arguments of options.
case "$prev" in
-d|--dir)
_filedir -d
return $?
;;
-t|--taskfile)
_filedir yaml
_filedir yml
return $?
;;
-o|--output)
COMPREPLY=( $( compgen -W "interleaved group prefixed" -- $cur ) )
return 0
;;
esac
2022-08-11 20:48:41 +02:00
# Handle normal options.
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "$(_parse_help $1)" -- $cur ) )
return 0
;;
esac
# Get task names.
local line tasks=()
while read line; do
if [[ "${line}" =~ ^\*[[:space:]]+([[:alnum:]_:]+): ]]; then
tasks+=( ${BASH_REMATCH[1]} )
fi
done < <("${COMP_WORDS[@]}" $_GO_TASK_COMPLETION_LIST_OPTION 2> /dev/null)
# Prepare task completions and post-process due to colons.
COMPREPLY=( $( compgen -W "${tasks[*]}" -- "$cur" ) )
__ltrim_colon_completions "$cur"
}
2022-08-11 20:48:41 +02:00
complete -F _task task