in tooling/templatize/pkg/pipeline/validation.go [114:145]
func (p *Pipeline) Validate() error {
// collect all steps from all resourcegroups and fail if there are duplicates
stepMap := make(map[string]Step)
for _, rg := range p.ResourceGroups {
for _, step := range rg.Steps {
if _, ok := stepMap[step.StepName()]; ok {
return fmt.Errorf("duplicate step name %q", step.StepName())
}
stepMap[step.StepName()] = step
}
}
// validate dependsOn for a step exists
for _, step := range stepMap {
for _, dep := range step.Dependencies() {
if _, ok := stepMap[dep]; !ok {
return fmt.Errorf("invalid dependency on step %s: dependency %s does not exist", step.StepName(), dep)
}
}
}
// todo check for circular dependencies
// validate resource groups
for _, rg := range p.ResourceGroups {
err := rg.Validate()
if err != nil {
return err
}
}
return nil
}