From 2d782fcb46cb2c27dac3c5a940a4b8ccd8f3870b Mon Sep 17 00:00:00 2001 From: Sam Coe Date: Thu, 21 Jan 2021 13:13:58 -0800 Subject: [PATCH] Retrieve repo outside of survey function --- pkg/cmd/pr/merge/merge.go | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/pkg/cmd/pr/merge/merge.go b/pkg/cmd/pr/merge/merge.go index 7cd9f1c56..018522fc1 100644 --- a/pkg/cmd/pr/merge/merge.go +++ b/pkg/cmd/pr/merge/merge.go @@ -19,6 +19,8 @@ import ( "github.com/spf13/cobra" ) +var cancelError = errors.New("cancelError") + type MergeOptions struct { HttpClient func() (*http.Client, error) Config func() (config.Config, error) @@ -137,7 +139,12 @@ func mergeRun(opts *MergeOptions) error { mergeMethod := opts.MergeMethod if opts.InteractiveMode { - mergeMethod, deleteBranch, err = prInteractiveMerge(opts, crossRepoPR, baseRepo, apiClient) + r, err := api.GitHubRepo(apiClient, baseRepo) + if err != nil { + return err + } + + mergeMethod, deleteBranch, err = prInteractiveMerge(opts, r, crossRepoPR) if err != nil { if errors.Is(err, cancelError) { fmt.Fprintln(opts.IO.ErrOut, "Cancelled.") @@ -229,35 +236,17 @@ func mergeRun(opts *MergeOptions) error { return nil } -var cancelError = errors.New("cancelError") - -func prInteractiveMerge(opts *MergeOptions, crossRepoPR bool, repo ghrepo.Interface, apiClient *api.Client) (api.PullRequestMergeMethod, bool, error) { - var baseRepo *api.Repository - - if r, ok := repo.(*api.Repository); ok { - baseRepo = r - } else { - var err error - baseRepo, err = api.GitHubRepo(apiClient, repo) - if err != nil { - return 0, false, fmt.Errorf("could not fetch merge options: %w", err) - } - } - +func prInteractiveMerge(opts *MergeOptions, baseRepo *api.Repository, crossRepoPR bool) (api.PullRequestMergeMethod, bool, error) { var mergeOpts []string - if baseRepo.MergeCommitAllowed { mergeOpts = append(mergeOpts, "Create a merge commit") } - if baseRepo.RebaseMergeAllowed { mergeOpts = append(mergeOpts, "Rebase and merge") } - if baseRepo.SquashMergeAllowed { mergeOpts = append(mergeOpts, "Squash and merge") } - if len(mergeOpts) == 0 { return 0, false, fmt.Errorf("no merge options enabled, please enable at least one for your repo") }