nitter/nitters/gitea/pr_nitter.go

60 lines
1.3 KiB
Go
Raw Normal View History

2023-03-08 08:05:13 +00:00
package gitea
2023-03-08 13:40:04 +00:00
import (
"fmt"
"strings"
2023-03-08 08:05:13 +00:00
2023-03-08 13:40:04 +00:00
"code.gitea.io/sdk/gitea"
"github.com/golangci/golangci-lint/pkg/report"
"github.com/golangci/golangci-lint/pkg/result"
2023-03-08 08:05:13 +00:00
2023-03-08 13:40:04 +00:00
"code.icb4dc0.de/prskr/nitter/nitters"
)
var _ nitters.Nitter = (*prNitter)(nil)
func NewPRNitter(cli *gitea.Client, cfg *GiteaPRConfig) *prNitter {
return &prNitter{
Client: cli,
cfg: cfg,
}
}
type prNitter struct {
*gitea.Client
cfg *GiteaPRConfig
}
func (p prNitter) Report(report *report.Data, issues []result.Issue) error {
warningsBuilder := strings.Builder{}
for i := range report.Warnings {
warningsBuilder.WriteString(fmt.Sprintf("\t- %s (%s)", report.Warnings[i].Text, report.Warnings[i].Tag))
}
pullReviewOptions := gitea.CreatePullReviewOptions{
State: "comment",
Body: fmt.Sprintf(`golangci-lint review results:
Error: %s
Warnings:
%s
`, report.Error, warningsBuilder.String()),
Comments: make([]gitea.CreatePullReviewComment, 0, len(issues)),
}
for i := range issues {
issue := issues[i]
pullReviewOptions.Comments = append(pullReviewOptions.Comments, gitea.CreatePullReviewComment{
Path: issue.Pos.Filename,
Body: "",
NewLineNum: int64(issue.Pos.Line),
})
}
_, _, err := p.CreatePullReview(p.cfg.Namespace, p.cfg.Repo, p.cfg.PRIndex, pullReviewOptions)
if err != nil {
return err
}
return nil
2023-03-08 08:05:13 +00:00
}