feat (help): allow cli option to list tasks with no desc

added an add'l cli option that lists all tasks, with or without description.
orig. behavior: task -l lists tasks with desc field
new behaviour: task -la or task -a will list all tasks. if task has desc, it will be included.

BREAKING CHANGES: none, that I know of.
NOTES/Concerns:
- This is wip.
- Haven't checked how it interacts with bash completion.
- The new Executor.TaskNames func does not use e.CompiledTask(taskfile.Call{Task: task.Task})
This commit is contained in:
Kevin Ard
2020-11-13 15:27:03 -05:00
parent b136166fc9
commit 9bed7f7a9b
3 changed files with 28 additions and 6 deletions

24
help.go
View File

@@ -9,10 +9,19 @@ import (
"github.com/go-task/task/v3/taskfile"
)
// PrintTasksHelp prints help os tasks that have a description
func (e *Executor) PrintTasksHelp() {
tasks := e.tasksWithDesc()
// PrintTasksHelp prints tasks' help.
// Behavior is governed by listAll. When false, only tasks with descriptions are reported.
// When true, all tasks are reported with descriptions shown where available.
func (e *Executor) PrintTasksHelp(listAll bool) {
var tasks []*taskfile.Task
if listAll == true {
tasks = e.taskNames()
} else {
tasks = e.tasksWithDesc()
}
if len(tasks) == 0 {
// TODO: This message should be more informative. Maybe a hint to try -la for showing all?
e.Logger.Outf(logger.Yellow, "task: No tasks with description available")
return
}
@@ -26,6 +35,15 @@ func (e *Executor) PrintTasksHelp() {
w.Flush()
}
func (e *Executor) taskNames() (tasks []*taskfile.Task) {
tasks = make([]*taskfile.Task, 0, len(e.Taskfile.Tasks))
for _, task := range e.Taskfile.Tasks {
tasks = append(tasks, task)
}
sort.Slice(tasks, func(i, j int) bool { return tasks[i].Task < tasks[j].Task })
return
}
func (e *Executor) tasksWithDesc() (tasks []*taskfile.Task) {
tasks = make([]*taskfile.Task, 0, len(e.Taskfile.Tasks))
for _, task := range e.Taskfile.Tasks {