func NewCleanupErrorReport()

in tf/utils.go [367:401]


func NewCleanupErrorReport(applyErr error, logs []paltypes.RequestTrace) types.ErrorReport {
	out := types.ErrorReport{
		Errors: make([]types.Error, 0),
		Logs:   logs,
	}
	if applyErr == nil {
		return out
	}
	var res []string
	if strings.Contains(applyErr.Error(), "Error: Failed to delete resource") {
		res = strings.Split(applyErr.Error(), "Error: Failed to delete resource")
	} else {
		res = strings.Split(applyErr.Error(), "Error: deleting")
	}
	for _, e := range res {
		var id, apiVersion string
		errorMessage := e
		if lastIndex := strings.LastIndex(e, "------"); lastIndex != -1 {
			errorMessage = errorMessage[0:lastIndex]
		}
		if matches := regexp.MustCompile(`ResourceId\s+\\?"([^\\]+)\\?"\s+/\s+Api Version \\?"([^\\]+)\\?"\)`).FindAllStringSubmatch(e, -1); len(matches) == 1 {
			id = matches[0][1]
			apiVersion = matches[0][2]
		} else {
			continue
		}

		out.Errors = append(out.Errors, types.Error{
			Id:      id,
			Type:    fmt.Sprintf("%s@%s", utils.ResourceTypeOfResourceId(id), apiVersion),
			Message: errorMessage,
		})
	}
	return out
}