commands/mr/reopen/mr_reopen.go (55 lines of code) (raw):

package reopen import ( "fmt" "github.com/MakeNowJust/heredoc/v2" "gitlab.com/gitlab-org/cli/api" "gitlab.com/gitlab-org/cli/commands/cmdutils" "gitlab.com/gitlab-org/cli/commands/mr/mrutils" "github.com/spf13/cobra" gitlab "gitlab.com/gitlab-org/api/client-go" ) func NewCmdReopen(f *cmdutils.Factory) *cobra.Command { mrReopenCmd := &cobra.Command{ Use: "reopen [<id>... | <branch>...]", Short: `Reopen a merge request.`, Example: heredoc.Doc(` Reopen merge request 123 - glab mr reopen 123 Reopen merge requests 123, 456, and 789 - glab mr reopen 123 456 789 Reopen merge requests from branches branch-1 and branch-2 - glab mr reopen branch-1 branch-2 `), Aliases: []string{"open"}, RunE: func(cmd *cobra.Command, args []string) error { c := f.IO.Color() apiClient, err := f.HttpClient() if err != nil { return err } mrs, repo, err := mrutils.MRsFromArgs(f, args, "closed") if err != nil { return err } l := &gitlab.UpdateMergeRequestOptions{} l.StateEvent = gitlab.Ptr("reopen") for _, mr := range mrs { if err = mrutils.MRCheckErrors(mr, mrutils.MRCheckErrOptions{ Opened: true, Merged: true, }); err != nil { return err } fmt.Fprintf(f.IO.StdOut, "- Reopening merge request !%d...\n", mr.IID) mr, err = api.UpdateMR(apiClient, repo.FullName(), mr.IID, l) if err != nil { return err } fmt.Fprintf(f.IO.StdOut, "%s Reopened merge request !%d.\n", c.GreenCheck(), mr.IID) fmt.Fprintln(f.IO.StdOut, mrutils.DisplayMR(f.IO.Color(), &mr.BasicMergeRequest, f.IO.IsaTTY)) } return nil }, } return mrReopenCmd }