(filters ...FilterFunc)
| 552 | type FilterFunc func(task *ast.Task) bool |
| 553 | |
| 554 | func (e *Executor) GetTaskList(filters ...FilterFunc) ([]*ast.Task, error) { |
| 555 | tasks := make([]*ast.Task, 0, e.Taskfile.Tasks.Len()) |
| 556 | |
| 557 | // Create an error group to wait for each task to be compiled |
| 558 | var g errgroup.Group |
| 559 | |
| 560 | // Sort the tasks |
| 561 | if e.TaskSorter == nil { |
| 562 | e.TaskSorter = sort.AlphaNumericWithRootTasksFirst |
| 563 | } |
| 564 | |
| 565 | // Filter tasks based on the given filter functions |
| 566 | for task := range e.Taskfile.Tasks.Values(e.TaskSorter) { |
| 567 | var shouldFilter bool |
| 568 | for _, filter := range filters { |
| 569 | if filter(task) { |
| 570 | shouldFilter = true |
| 571 | } |
| 572 | } |
| 573 | if !shouldFilter { |
| 574 | tasks = append(tasks, task) |
| 575 | } |
| 576 | } |
| 577 | |
| 578 | // Compile the list of tasks |
| 579 | for i := range tasks { |
| 580 | g.Go(func() error { |
| 581 | compiledTask, err := e.CompiledTaskForTaskList(&Call{Task: tasks[i].Task}) |
| 582 | if err != nil { |
| 583 | return err |
| 584 | } |
| 585 | tasks[i] = compiledTask |
| 586 | return nil |
| 587 | }) |
| 588 | } |
| 589 | |
| 590 | // Wait for all the go routines to finish |
| 591 | if err := g.Wait(); err != nil { |
| 592 | return nil, err |
| 593 | } |
| 594 | |
| 595 | return tasks, nil |
| 596 | } |
| 597 | |
| 598 | // FilterOutNoDesc removes all tasks that do not contain a description. |
| 599 | func FilterOutNoDesc(task *ast.Task) bool { |
no test coverage detected