func Header()

in pkg/review/header.go [111:173]


func Header(result *header2.Result, config *header2.ConfigHeader) error {
	ghOnce.Do(Init)

	if !result.HasFailure() || !IsPR() || gh == nil || config.Comment == header2.Never {
		return nil
	}

	commentedFiles := make(map[string]bool)
	for _, comment := range GetAllReviewsComments() {
		decodeString := comment.GetBody()
		if strings.Contains(decodeString, Identification) {
			logger.Log.Debugln("Path:", comment.GetPath())
			commentedFiles[comment.GetPath()] = true
		}
	}
	logger.Log.Debugln("CommentedFiles:", commentedFiles)

	s := "RIGHT"
	l := 1

	var comments []*github.DraftReviewComment
	for _, changedFile := range GetChangedFiles() {
		logger.Log.Debugln("ChangedFile:", changedFile.GetFilename())
		if commentedFiles[changedFile.GetFilename()] {
			logger.Log.Debugln("ChangedFile was reviewed, skipping:", changedFile.GetFilename())
			continue
		}
		for _, invalidFile := range result.Failure {
			if !strings.HasSuffix(invalidFile, changedFile.GetFilename()) {
				continue
			}
			blob, _, err := gh.Git.GetBlob(ctx, owner, repo, changedFile.GetSHA())
			if err != nil {
				logger.Log.Warnln("Failed to get blob:", changedFile.GetFilename(), changedFile.GetSHA())
				continue
			}
			style := comments2.FileCommentStyle(changedFile.GetFilename())
			if style == nil {
				logger.Log.Warnln("Failed to determine the comment style of file:", changedFile.GetFilename())
				continue
			}
			header, err := header2.GenerateLicenseHeader(style, config)
			if err != nil {
				logger.Log.Warnln("Failed to generate comment header:", changedFile.GetFilename())
				continue
			}
			decodeString, err := base64.StdEncoding.DecodeString(blob.GetContent())
			if err != nil {
				logger.Log.Debugln("Failed to decode blob content:", err)
				continue
			}
			body := "```suggestion\n" + header + strings.Split(string(decodeString), "\n")[0] + "\n```\n" + fmt.Sprintf(`<!-- %v -->`, Identification)
			comments = append(comments, &github.DraftReviewComment{
				Path: changedFile.Filename,
				Body: &body,
				Side: &s,
				Line: &l,
			})
		}
	}

	return tryReview(result, config, comments)
}