github.com/benchkram/bob@v0.0.0-20240314204020-b7a57f2f9be9/bob/bobfile/playbook.go (about) 1 package bobfile 2 3 import ( 4 "github.com/benchkram/bob/bob/playbook" 5 "github.com/benchkram/bob/bobtask" 6 ) 7 8 func (b *Bobfile) Playbook(taskName string, opts ...playbook.Option) (*playbook.Playbook, error) { 9 10 var idCounter int 11 pb := playbook.New( 12 taskName, 13 idCounter, 14 opts..., 15 ) 16 idCounter++ 17 18 err := b.BTasks.Walk(taskName, "", func(tn string, task bobtask.Task, err error) error { 19 if err != nil { 20 return err 21 } 22 if taskName == tn { 23 // The root task already has an id 24 statusTask := playbook.NewStatus(&task) 25 pb.Tasks[tn] = statusTask 26 pb.TasksOptimized = append(pb.TasksOptimized, statusTask) 27 return nil 28 } 29 30 task.TaskID = idCounter 31 statusTask := playbook.NewStatus(&task) 32 33 pb.Tasks[tn] = statusTask 34 pb.TasksOptimized = append(pb.TasksOptimized, statusTask) 35 36 idCounter++ 37 38 return nil 39 }) 40 if err != nil { 41 return nil, err 42 } 43 44 return pb, nil 45 }