func()

in codecatalyst-runner/pkg/workflows/workflow_plans_provider.go [72:110]


func (wpp *workflowPlansProvider) Plans(ctx context.Context) ([]runner.Plan, error) {
	plans := make([]runner.Plan, 0)
	for _, mapItem := range wpp.workflow.Actions {
		actionName := mapItem.Key.(string)
		var actionOrGroup ActionOrGroup
		if buf, err := yaml.Marshal(mapItem.Value); err != nil {
			return nil, err
		} else if err := yaml.Unmarshal(buf, &actionOrGroup); err != nil {
			return nil, err
		}
		if actionOrGroup.Action.Identifier != "" {
			plan, err := wpp.planAction(ctx, actionName, &actionOrGroup.Action)
			if err != nil {
				return nil, fmt.Errorf("unable to create plan for action %s: %w", actionName, err)
			}
			if plan != nil {
				plans = append(plans, plan)
			}
		} else {
			for subName, action := range actionOrGroup.Actions {
				fullName := fmt.Sprintf("%s@%s", actionName, subName)
				plan, err := wpp.planAction(ctx, fullName, action)
				if err != nil {
					return nil, fmt.Errorf("unable to create plan for action %s: %w", fullName, err)
				}
				if plan != nil {
					plans = append(plans, plan)
				}
			}
		}
	}
	if log.Debug().Enabled() {
		log.Debug().Msgf("created plans from workflow=%+v", wpp.workflow)
		for _, plan := range plans {
			log.Debug().Msgf("  plan=%+v", plan)
		}
	}
	return plans, nil
}