github.com/benchkram/bob@v0.0.0-20240314204020-b7a57f2f9be9/bob/playbook/status_map.go (about)

     1  package playbook
     2  
     3  import (
     4  	"github.com/benchkram/bob/pkg/boberror"
     5  	"github.com/benchkram/bob/pkg/usererror"
     6  )
     7  
     8  type StatusMap map[string]*Status
     9  
    10  // walk the task tree starting at root. Following dependend tasks.
    11  func (tsm StatusMap) walk(root string, fn func(taskname string, _ *Status, _ error) error) error {
    12  	task, ok := tsm[root]
    13  	if !ok {
    14  		return usererror.Wrap(boberror.ErrTaskDoesNotExistF(root))
    15  	}
    16  
    17  	err := fn(root, task, nil)
    18  	if err != nil {
    19  		return err
    20  	}
    21  	for _, dependentTaskName := range task.Task.DependsOn {
    22  		err = tsm.walk(dependentTaskName, fn)
    23  		if err != nil {
    24  			return err
    25  		}
    26  	}
    27  
    28  	return nil
    29  }