func()

in pkg/cmd/serviceaccount/phases/workflow/runner.go [124:153]


func (r *runner) Run(data RunData) error {
	skipPhases, err := r.computeSkipPhases()
	if err != nil {
		return errors.Wrap(err, "failed to compute skip phases")
	}

	filtered := []Phase{}
	for _, phase := range r.phases {
		if skipPhases[phase.Name] {
			mlog.WithName(phase.Name).Info("skipping phase")
			continue
		}
		filtered = append(filtered, phase)
	}

	// Run PreRun for all phases before executing the phases
	for _, phase := range filtered {
		if err := phase.PreRun(data); err != nil {
			return errors.Wrapf(err, "failed to run pre-run for phase %s", phase.Name)
		}
	}

	for _, phase := range filtered {
		if err := phase.Run(context.Background(), data); err != nil {
			return errors.Wrapf(err, "failed to run phase %s", phase.Name)
		}
	}

	return nil
}