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  }