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
}