frag-review/src/cmd/open.go

52 lines
1.5 KiB
Go
Raw Normal View History

package cmd
import (
"fmt"
"strings"
"code.gitea.io/sdk/gitea"
"github.com/spf13/cobra"
"git.mfocko.xyz/mfocko/frag-review/core"
)
var (
openCmd = &cobra.Command{
Use: "open",
Short: "Opens pull requests for review.",
PreRun: TaskRequiredPreRun,
Run: func(cmd *cobra.Command, args []string) {
client, err := gitea.NewClient(config.Gitea.InstanceURL, gitea.SetToken(config.Gitea.Token))
core.ExitOnError("Couldn't create gitea client", err)
milestone, _, err := client.GetMilestoneByName(config.Gitea.Owner, config.Gitea.Repository, task)
core.ExitOnError("Couldn't find the milestone", err)
fmt.Printf("Task %s found (deadline %s)\n", milestone.Title, milestone.Deadline)
branches, _, err := client.ListRepoBranches(config.Gitea.Owner, config.Gitea.Repository, gitea.ListRepoBranchesOptions{})
core.ExitOnError("Couldn't list all the branches", err)
ProcessBranches(client, milestone, branches)
},
}
)
func ProcessBranches(client *gitea.Client, milestone *gitea.Milestone, branches []*gitea.Branch) {
for _, branch := range branches {
if !strings.HasPrefix(branch.Name, milestone.Title) {
continue
}
fmt.Printf("- Processing %s\n", branch.Name)
pr, _, err := client.CreatePullRequest(config.Gitea.Owner, config.Gitea.Repository, gitea.CreatePullRequestOption{
Head: branch.Name,
Base: "main",
Title: branch.Name,
Milestone: milestone.ID,
})
core.ExitOnError("Couldn't create PR", err)
fmt.Printf("Created PR #%s\n", pr.ID)
}
}