Minor fixes
This commit is contained in:
@@ -3,7 +3,6 @@ package actions
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/google/go-github/v69/github"
|
"github.com/google/go-github/v69/github"
|
||||||
"github.com/mudler/LocalAGI/core/types"
|
"github.com/mudler/LocalAGI/core/types"
|
||||||
@@ -37,10 +36,10 @@ func (g *GithubPRCreator) createOrUpdateBranch(ctx context.Context, branchName s
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Try to get the branch if it exists
|
// Try to get the branch if it exists
|
||||||
_, _, err = g.client.Git.GetRef(ctx, g.owner, g.repository, "refs/heads/"+branchName)
|
_, resp, err := g.client.Git.GetRef(ctx, g.owner, g.repository, "refs/heads/"+branchName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// If branch doesn't exist, create it
|
// If branch doesn't exist, create it
|
||||||
if strings.Contains(err.Error(), "404 Not Found") {
|
if resp != nil && resp.StatusCode == 404 {
|
||||||
newRef := &github.Reference{
|
newRef := &github.Reference{
|
||||||
Ref: github.String("refs/heads/" + branchName),
|
Ref: github.String("refs/heads/" + branchName),
|
||||||
Object: &github.GitObject{SHA: ref.Object.SHA},
|
Object: &github.GitObject{SHA: ref.Object.SHA},
|
||||||
@@ -132,15 +131,40 @@ func (g *GithubPRCreator) Run(ctx context.Context, params types.ActionParams) (t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create pull request
|
// Check if PR already exists for this branch
|
||||||
pr := &github.NewPullRequest{
|
prs, _, err := g.client.PullRequests.List(ctx, result.Owner, result.Repository, &github.PullRequestListOptions{
|
||||||
|
State: "open",
|
||||||
|
Head: fmt.Sprintf("%s:%s", result.Owner, result.Branch),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return types.ActionResult{}, fmt.Errorf("failed to list pull requests: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(prs) > 0 {
|
||||||
|
// Update existing PR
|
||||||
|
pr := prs[0]
|
||||||
|
update := &github.PullRequest{
|
||||||
|
Title: &result.Title,
|
||||||
|
Body: &result.Body,
|
||||||
|
}
|
||||||
|
updatedPR, _, err := g.client.PullRequests.Edit(ctx, result.Owner, result.Repository, pr.GetNumber(), update)
|
||||||
|
if err != nil {
|
||||||
|
return types.ActionResult{}, fmt.Errorf("failed to update pull request: %w", err)
|
||||||
|
}
|
||||||
|
return types.ActionResult{
|
||||||
|
Result: fmt.Sprintf("Updated pull request #%d: %s", updatedPR.GetNumber(), updatedPR.GetHTMLURL()),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create new pull request
|
||||||
|
newPR := &github.NewPullRequest{
|
||||||
Title: &result.Title,
|
Title: &result.Title,
|
||||||
Body: &result.Body,
|
Body: &result.Body,
|
||||||
Head: &result.Branch,
|
Head: &result.Branch,
|
||||||
Base: &result.BaseBranch,
|
Base: &result.BaseBranch,
|
||||||
}
|
}
|
||||||
|
|
||||||
createdPR, _, err := g.client.PullRequests.Create(ctx, result.Owner, result.Repository, pr)
|
createdPR, _, err := g.client.PullRequests.Create(ctx, result.Owner, result.Repository, newPR)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return types.ActionResult{}, fmt.Errorf("failed to create pull request: %w", err)
|
return types.ActionResult{}, fmt.Errorf("failed to create pull request: %w", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ var _ = Describe("GithubPRCreator", func() {
|
|||||||
|
|
||||||
result, err := action.Run(ctx, params)
|
result, err := action.Run(ctx, params)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
Expect(result.Result).To(ContainSubstring("Created pull request #"))
|
Expect(result.Result).To(ContainSubstring("pull request #"))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should handle missing required fields", func() {
|
It("should handle missing required fields", func() {
|
||||||
@@ -104,9 +104,10 @@ var _ = Describe("GithubPRCreator", func() {
|
|||||||
|
|
||||||
It("should handle provided repository and owner in config", func() {
|
It("should handle provided repository and owner in config", func() {
|
||||||
config := map[string]string{
|
config := map[string]string{
|
||||||
"token": "test-token",
|
"token": "test-token",
|
||||||
"repository": "test-repo",
|
"repository": "test-repo",
|
||||||
"owner": "test-owner",
|
"defaultBranch": "main",
|
||||||
|
"owner": "test-owner",
|
||||||
}
|
}
|
||||||
action := actions.NewGithubPRCreator(config)
|
action := actions.NewGithubPRCreator(config)
|
||||||
def := action.Definition()
|
def := action.Definition()
|
||||||
|
|||||||
Reference in New Issue
Block a user