in cmd/changelog/create.go [174:223]
func interactiveEdit(annotation *changelog.Annotation, modules *gomod.ModuleTree) error {
var issues []string
template, err := changelog.AnnotationToTemplate(*annotation)
if err != nil {
return err
}
filledTemplate, err := editTemplate(template)
if err != nil {
return fmt.Errorf("failed to create change: %v", err)
}
filledAnnotation, err := changelog.TemplateToAnnotation(filledTemplate)
if err != nil {
return fmt.Errorf("failed to parse annotation: %v", err)
}
if err = changelog.Validate(filledAnnotation); err != nil {
var ve *changelog.ValidationError
if !errors.As(err, &ve) {
return err
}
issues = append(issues, ve.Issues...)
}
if invalidModules := validateModules(filledAnnotation.Modules, modules); len(invalidModules) > 0 {
for _, module := range invalidModules {
issues = append(issues, fmt.Sprintf("unknown module: %s", module))
}
}
if len(issues) > 0 {
var sb strings.Builder
sb.WriteString("Invalid Template:\n")
for _, issue := range issues {
sb.WriteRune('\t')
sb.WriteString(issue)
sb.WriteRune('\n')
}
return fmt.Errorf(sb.String())
}
// Ensure this didn't get swapped / changed
filledAnnotation.ID = annotation.ID
*annotation = filledAnnotation
return nil
}