func()

in build_step.go [17:38]


func (sb *StepBuilder) BuildStep(s Steper) {
	if sb.built == nil {
		sb.built = make(Set[Steper])
	}
	Traverse(s, func(s Steper, walked []Steper) TraverseDecision {
		if sb.built.Has(s) {
			return TraverseEndBranch // already built
		}
		if _, ok := s.(interface{ BuildStep(Steper) }); ok {
			return TraverseEndBranch // it's a sub-workflow, let it manage its own steps
		}
		if b, ok := s.(interface{ BuildStep() }); ok {
			if r, ok := s.(interface{ Reset() }); ok {
				r.Reset() // reset the step before building
			}
			b.BuildStep()
			sb.built.Add(s)
			return TraverseEndBranch // not necessary to go deeper
		}
		return TraverseContinue
	})
}