mirror of
https://github.com/go-task/task.git
synced 2025-03-05 15:05:42 +02:00
1. 'compgen -c' lists _all_ command names on the system, which is not appropriate for this script, furthermore echo does not read from stdin so the output is lost. 2. use _get_comp_words_by_ref and __ltrim_colon_completions to handle task names with colons. "...modifying COMP_WORDBREAKS in your completion script is not safe (as it is a global variable and it has the side effect of affecting the behavior of other completion scripts" Ref.: https://stackoverflow.com/a/12495727/7044304 3. Add options completion 4. Use task --list-all
23 lines
428 B
Bash
23 lines
428 B
Bash
# /bin/bash
|
|
|
|
_task_completion()
|
|
{
|
|
local cur
|
|
_get_comp_words_by_ref -n : cur
|
|
|
|
case "$cur" in
|
|
--*)
|
|
local options="$(_parse_help task)"
|
|
COMPREPLY=( $(compgen -W "$options" -- "$cur") )
|
|
;;
|
|
*)
|
|
local tasks="$(task --list-all | awk 'NR>1 { sub(/:$/,"",$2); print $2 }')"
|
|
COMPREPLY=( $(compgen -W "$tasks" -- "$cur") )
|
|
;;
|
|
esac
|
|
|
|
__ltrim_colon_completions "$cur"
|
|
}
|
|
|
|
complete -F _task_completion task
|