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  }