mirror of https://gitlab.com/gitlab-org/cli.git
233 lines
5.8 KiB
Go
233 lines
5.8 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/xanzy/go-gitlab"
|
|
)
|
|
|
|
var ApproveMR = func(client *gitlab.Client, projectID interface{}, mrID int, opts *gitlab.ApproveMergeRequestOptions) (*gitlab.MergeRequestApprovals, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
mr, _, err := client.MergeRequestApprovals.ApproveMergeRequest(projectID, mrID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mr, nil
|
|
}
|
|
|
|
var GetMRApprovalState = func(client *gitlab.Client, projectID interface{}, mrID int, opts ...gitlab.RequestOptionFunc) (*gitlab.MergeRequestApprovalState, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
mrApprovals, _, err := client.MergeRequestApprovals.GetApprovalState(projectID, mrID, opts...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mrApprovals, nil
|
|
}
|
|
|
|
var GetMR = func(client *gitlab.Client, projectID interface{}, mrID int, opts *gitlab.GetMergeRequestsOptions) (*gitlab.MergeRequest, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
mr, _, err := client.MergeRequests.GetMergeRequest(projectID, mrID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mr, nil
|
|
}
|
|
|
|
var ListMRs = func(client *gitlab.Client, projectID interface{}, opts *gitlab.ListProjectMergeRequestsOptions) ([]*gitlab.MergeRequest, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
if opts.PerPage == 0 {
|
|
opts.PerPage = DefaultListLimit
|
|
}
|
|
|
|
mrs, _, err := client.MergeRequests.ListProjectMergeRequests(projectID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mrs, nil
|
|
}
|
|
|
|
var ListMRsWithAssignees = func(client *gitlab.Client, projectID interface{}, opts *gitlab.ListProjectMergeRequestsOptions, assigneeIds []int) ([]*gitlab.MergeRequest, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
if opts.PerPage == 0 {
|
|
opts.PerPage = DefaultListLimit
|
|
}
|
|
|
|
mrs := make([]*gitlab.MergeRequest, 0)
|
|
for _, id := range assigneeIds {
|
|
opts.AssigneeID = gitlab.Int(id)
|
|
assingeMrs, err := ListMRs(client, projectID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
mrs = append(mrs, assingeMrs...)
|
|
}
|
|
return mrs, nil
|
|
}
|
|
|
|
var UpdateMR = func(client *gitlab.Client, projectID interface{}, mrID int, opts *gitlab.UpdateMergeRequestOptions) (*gitlab.MergeRequest, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
mr, _, err := client.MergeRequests.UpdateMergeRequest(projectID, mrID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mr, nil
|
|
}
|
|
|
|
var DeleteMR = func(client *gitlab.Client, projectID interface{}, mrID int) error {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
_, err := client.MergeRequests.DeleteMergeRequest(projectID, mrID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
var MergeMR = func(client *gitlab.Client, projectID interface{}, mrID int, opts *gitlab.AcceptMergeRequestOptions) (*gitlab.MergeRequest, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
mrs, _, err := client.MergeRequests.AcceptMergeRequest(projectID, mrID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mrs, nil
|
|
}
|
|
|
|
var CreateMR = func(client *gitlab.Client, projectID interface{}, opts *gitlab.CreateMergeRequestOptions) (*gitlab.MergeRequest, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
mr, _, err := client.MergeRequests.CreateMergeRequest(projectID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mr, nil
|
|
}
|
|
|
|
var GetMRLinkedIssues = func(client *gitlab.Client, projectID interface{}, mrID int, opts *gitlab.GetIssuesClosedOnMergeOptions) ([]*gitlab.Issue, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
mrIssues, _, err := client.MergeRequests.GetIssuesClosedOnMerge(projectID, mrID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mrIssues, nil
|
|
}
|
|
|
|
var CreateMRNote = func(client *gitlab.Client, projectID interface{}, mrID int, opts *gitlab.CreateMergeRequestNoteOptions) (*gitlab.Note, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
|
|
note, _, err := client.Notes.CreateMergeRequestNote(projectID, mrID, opts)
|
|
if err != nil {
|
|
return note, err
|
|
}
|
|
|
|
return note, nil
|
|
}
|
|
|
|
var ListMRNotes = func(client *gitlab.Client, projectID interface{}, mrID int, opts *gitlab.ListMergeRequestNotesOptions) ([]*gitlab.Note, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
|
|
if opts.PerPage == 0 {
|
|
opts.PerPage = DefaultListLimit
|
|
}
|
|
|
|
notes, _, err := client.Notes.ListMergeRequestNotes(projectID, mrID, opts)
|
|
if err != nil {
|
|
return notes, err
|
|
}
|
|
|
|
return notes, nil
|
|
}
|
|
|
|
var RebaseMR = func(client *gitlab.Client, projectID interface{}, mrID int) error {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
|
|
_, err := client.MergeRequests.RebaseMergeRequest(projectID, mrID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
var UnapproveMR = func(client *gitlab.Client, projectID interface{}, mrID int) error {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
|
|
_, err := client.MergeRequestApprovals.UnapproveMergeRequest(projectID, mrID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
var SubscribeToMR = func(client *gitlab.Client, projectID interface{}, mrID int, opts gitlab.RequestOptionFunc) (*gitlab.MergeRequest, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
|
|
mr, _, err := client.MergeRequests.SubscribeToMergeRequest(projectID, mrID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mr, nil
|
|
}
|
|
|
|
var UnsubscribeFromMR = func(client *gitlab.Client, projectID interface{}, mrID int, opts gitlab.RequestOptionFunc) (*gitlab.MergeRequest, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
|
|
mr, _, err := client.MergeRequests.UnsubscribeFromMergeRequest(projectID, mrID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mr, nil
|
|
}
|
|
|
|
var MRTodo = func(client *gitlab.Client, projectID interface{}, mrID int, opts gitlab.RequestOptionFunc) (*gitlab.Todo, error) {
|
|
if client == nil {
|
|
client = apiClient.Lab()
|
|
}
|
|
|
|
mr, _, err := client.MergeRequests.CreateTodo(projectID, mrID, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mr, nil
|
|
}
|