This commit is contained in:
2025-02-14 17:13:51 +01:00
parent 072d7b4825
commit 1c38c2105b
10 changed files with 243 additions and 49 deletions

View File

@@ -25,6 +25,7 @@ import (
"path"
"path/filepath"
"slices"
"strings"
"time"
transport "github.com/go-openapi/runtime/client"
@@ -79,7 +80,7 @@ type GiteaPRChecker interface {
}
type GiteaReviewRequester interface {
RequestReviews(pr *models.PullRequest, reviewer string) ([]*models.PullReview, error)
RequestReviews(pr *models.PullRequest, reviewer ...string) ([]*models.PullReview, error)
}
type GiteaReviewer interface {
@@ -96,8 +97,9 @@ type Gitea interface {
SetNotificationRead(notificationId int64) error
GetOrganization(orgName string) (*models.Organization, error)
GetOrganizationRepositories(orgName string) ([]*models.Repository, error)
CreateRepositoryIfNotExist(git Git, org Organization, repoName string) (*models.Repository, error)
CreateRepositoryIfNotExist(git Git, org, repoName string) (*models.Repository, error)
CreatePullRequestIfNotExist(repo *models.Repository, srcId, targetId, title, body string) (*models.PullRequest, error)
GetAssociatedPrjGitPR(prjGitOrg, prjGitRepo, refOrg, refRepo string, Index int) (*models.PullRequest, error)
GetRepositoryFileContent(org, repo, hash, path string) ([]byte, error)
GetPullRequestFileContent(pr *models.PullRequest, path string) ([]byte, error)
GetRecentPullRequests(org, repo string) ([]*models.PullRequest, error)
@@ -248,9 +250,9 @@ func (gitea *GiteaTransport) GetOrganizationRepositories(orgName string) ([]*mod
return repos, nil
}
func (gitea *GiteaTransport) CreateRepositoryIfNotExist(git Git, org Organization, repoName string) (*models.Repository, error) {
func (gitea *GiteaTransport) CreateRepositoryIfNotExist(git Git, org, repoName string) (*models.Repository, error) {
repo, err := gitea.client.Repository.RepoGet(
repository.NewRepoGetParams().WithDefaults().WithOwner(org.Username).WithRepo(repoName),
repository.NewRepoGetParams().WithDefaults().WithOwner(org).WithRepo(repoName),
gitea.transport.DefaultAuthentication)
if err != nil {
@@ -263,7 +265,7 @@ func (gitea *GiteaTransport) CreateRepositoryIfNotExist(git Git, org Organizatio
Name: &repoName,
ObjectFormatName: models.CreateRepoOptionObjectFormatNameSha256,
},
).WithOrg(org.Username),
).WithOrg(org),
nil,
)
@@ -272,7 +274,7 @@ func (gitea *GiteaTransport) CreateRepositoryIfNotExist(git Git, org Organizatio
case *organization.CreateOrgRepoCreated:
// weird, but ok, repo created
default:
return nil, fmt.Errorf("error creating repo '%s' under '%s'. Err: %w", repoName, org.Username, err)
return nil, fmt.Errorf("error creating repo '%s' under '%s'. Err: %w", repoName, org, err)
}
}
@@ -305,7 +307,7 @@ func (gitea *GiteaTransport) CreateRepositoryIfNotExist(git Git, org Organizatio
return repo.Payload, nil
default:
return nil, fmt.Errorf("cannot fetch repo data for '%s' / '%s' : %w", org.Username, repoName, err)
return nil, fmt.Errorf("cannot fetch repo data for %s/%s: %w", org, repoName, err)
}
}
@@ -344,9 +346,49 @@ func (gitea *GiteaTransport) CreatePullRequestIfNotExist(repo *models.Repository
return pr.GetPayload(), nil
}
func (gitea *GiteaTransport) RequestReviews(pr *models.PullRequest, reviewer string) ([]*models.PullReview, error) {
func (gitea *GiteaTransport) GetAssociatedPrjGitPR(prjGitOrg, prjGitRepo, refOrg, refRepo string, Index int) (*models.PullRequest, error) {
var page int64
state := "open"
for {
page++
prs, err := gitea.client.Repository.RepoListPullRequests(
repository.
NewRepoListPullRequestsParams().
WithDefaults().
WithOwner(prjGitOrg).
WithRepo(prjGitRepo).
WithState(&state).
WithPage(&page),
gitea.transport.DefaultAuthentication)
if err != nil {
return nil, fmt.Errorf("cannot fetch PR list for %s / %s : %w", prjGitOrg, prjGitRepo, err)
}
prLine := fmt.Sprintf(PrPattern, refOrg, refRepo, Index)
// payload_processing:
for _, pr := range prs.Payload {
lines := strings.Split(pr.Body, "\n")
for _, line := range lines {
if strings.TrimSpace(line) == prLine {
return pr, nil
}
}
}
if len(prs.Payload) < 10 {
break
}
}
return nil, nil
}
func (gitea *GiteaTransport) RequestReviews(pr *models.PullRequest, reviewers ...string) ([]*models.PullReview, error) {
reviewOptions := models.PullReviewRequestOptions{
Reviewers: []string{reviewer},
Reviewers: reviewers,
}
review, err := gitea.client.Repository.RepoCreatePullReviewRequests(
@@ -360,7 +402,7 @@ func (gitea *GiteaTransport) RequestReviews(pr *models.PullRequest, reviewer str
)
if err != nil {
return nil, fmt.Errorf("Cannot create pull request: %w", err)
return nil, fmt.Errorf("Cannot create pull request reviews: %w", err)
}
return review.GetPayload(), nil
@@ -482,8 +524,7 @@ func (gitea *GiteaTransport) GetRecentPullRequests(org, repo string) ([]*models.
func (gitea *GiteaTransport) GetRecentCommits(org, repo, branch string, commitNo int64) ([]*models.Commit, error) {
not := false
var page int64
page = 1
var page int64 = 1
commits, err := gitea.client.Repository.RepoGetAllCommits(
repository.NewRepoGetAllCommitsParams().
WithOwner(org).