diff --git a/completion/fish/task.fish b/completion/fish/task.fish index a38a213072..a41bab109e 100644 --- a/completion/fish/task.fish +++ b/completion/fish/task.fish @@ -16,8 +16,10 @@ function __task_get_tasks --description "Prints all available tasks with their d end end -complete -c $GO_TASK_PROGNAME -d 'Runs the specified task(s). Falls back to the "default" task if no task name was specified, or lists all tasks if an unknown task name was -specified.' -xa "(__task_get_tasks)" +complete -c $GO_TASK_PROGNAME \ + -d 'Runs the specified task(s). Falls back to the "default" task if no task name was specified, or lists all tasks if an unknown task name was specified.' \ + -xa "(__task_get_tasks)" \ + -n "not __fish_seen_subcommand_from --" complete -c $GO_TASK_PROGNAME -s c -l color -d 'colored output (default true)' complete -c $GO_TASK_PROGNAME -s d -l dir -d 'sets directory of execution' diff --git a/completion/zsh/_task b/completion/zsh/_task index ddb888d77b..2495cddde8 100755 --- a/completion/zsh/_task +++ b/completion/zsh/_task @@ -14,6 +14,13 @@ function __task_list() { taskfile=${(Qv)opt_args[(i)-t|--taskfile]} taskfile=${taskfile//\~/$HOME} + for arg in "${words[@]:0:$CURRENT}"; do + if [[ "$arg" = "--" ]]; then + # Use default completion for words after `--` as they are CLI_ARGS. + _default + return 0 + fi + done if [[ -n "$taskfile" && -f "$taskfile" ]]; then enabled=1 @@ -40,6 +47,7 @@ function __task_list() { _task() { _arguments \ + -S \ '(-C --concurrency)'{-C,--concurrency}'[limit number of concurrent tasks]: ' \ '(-p --parallel)'{-p,--parallel}'[run command-line tasks in parallel]' \ '(-f --force)'{-f,--force}'[run even if task is up-to-date]' \ @@ -55,13 +63,13 @@ _task() { '(-t --taskfile)'{-t,--taskfile}'[specify a different taskfile]:taskfile:_files' \ '(-v --verbose)'{-v,--verbose}'[verbose mode]' \ '(-w --watch)'{-w,--watch}'[watch-mode for given tasks, re-run when inputs change]' \ + '(operation)*: :__task_list' \ + '(operation)' \ - {-l,--list}'[list describable tasks]' \ - {-a,--list-all}'[list all tasks]' \ - {-i,--init}'[create new Taskfile.yml]' \ - '(-*)'{-h,--help}'[show help]' \ - '(-*)--version[show version and exit]' \ - '*: :__task_list' + '(*)'{-l,--list}'[list describable tasks]' \ + '(*)'{-a,--list-all}'[list all tasks]' \ + '(*)'{-i,--init}'[create new Taskfile.yml]' \ + '(- *)'{-h,--help}'[show help]' \ + '(- *)--version[show version and exit]' \ } # don't run the completion function when being source-ed or eval-ed