github.com/benchkram/bob@v0.0.0-20240314204020-b7a57f2f9be9/bob/playbook/status_slice.go (about) 1 package playbook 2 3 import "fmt" 4 5 type StatusSlice []*Status 6 7 var ErrWalkDone = fmt.Errorf("walking done") 8 9 // walk the task tree starting at root. Tasks deeper in the tree are walked first. 10 func (tsm StatusSlice) walkBottomFirst(root int, fn func(taskID int, _ *Status, _ error) error) error { 11 task := tsm[root] 12 13 var err error 14 for _, id := range task.Task.DependsOnIDs { 15 err = tsm.walkBottomFirst(id, fn) 16 if err != nil { 17 return err 18 } 19 } 20 21 return fn(root, task, err) 22 }