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 }