commands/mr/rebase/mr_rebase.go (56 lines of code) (raw):

package rebase import ( "github.com/MakeNowJust/heredoc/v2" gitlab "gitlab.com/gitlab-org/api/client-go" "gitlab.com/gitlab-org/cli/commands/cmdutils" "gitlab.com/gitlab-org/cli/commands/mr/mrutils" "github.com/spf13/cobra" ) type MRRebaseOptions struct { // SkipCI: rebase merge request while skipping CI/CD pipeline. SkipCI bool } func NewCmdRebase(f *cmdutils.Factory) *cobra.Command { opts := &MRRebaseOptions{} mrRebaseCmd := &cobra.Command{ Use: "rebase [<id> | <branch>] [flags]", Short: `Rebase the source branch of a merge request against its target branch.`, Long: heredoc.Doc(`If you don't have permission to push to the merge request's source branch, you'll get a 403 Forbidden response. `), Example: heredoc.Doc(` # Rebase merge request 123 $ glab mr rebase 123 # Rebase current branch $ glab mr rebase # Rebase merge request from branch $ glab mr rebase branch $ glab mr rebase branch --skip-ci `), Args: cobra.MaximumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { var err error apiClient, err := f.HttpClient() if err != nil { return err } mr, repo, err := mrutils.MRFromArgs(f, args, "opened") if err != nil { return err } if err = mrutils.RebaseMR(f.IO, apiClient, repo, mr, &gitlab.RebaseMergeRequestOptions{ SkipCI: gitlab.Ptr(opts.SkipCI), }); err != nil { return err } return nil }, } mrRebaseCmd.Flags().BoolVarP( &opts.SkipCI, "skip-ci", "", false, "Rebase merge request while skipping CI/CD pipeline.", ) return mrRebaseCmd }