From 8ff42bf28c2d0fca0f5be893318db4418f225de2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Thu, 17 Jun 2021 17:58:46 +0200 Subject: [PATCH] Fix repo override --- cmd/gh/main.go | 6 ------ pkg/cmdutil/repo_override.go | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/cmd/gh/main.go b/cmd/gh/main.go index 578ba3767..236943475 100644 --- a/cmd/gh/main.go +++ b/cmd/gh/main.go @@ -169,12 +169,6 @@ func mainRun() exitCode { return authError } - // enable `--repo` override - if cmd.Flags().Lookup("repo") != nil { - repoOverride, _ := cmd.Flags().GetString("repo") - cmdFactory.BaseRepo = cmdutil.OverrideBaseRepoFunc(cmdFactory, repoOverride) - } - return nil } diff --git a/pkg/cmdutil/repo_override.go b/pkg/cmdutil/repo_override.go index 8ae5a4760..6ce68011b 100644 --- a/pkg/cmdutil/repo_override.go +++ b/pkg/cmdutil/repo_override.go @@ -7,8 +7,27 @@ import ( "github.com/spf13/cobra" ) +func executeParentHooks(cmd *cobra.Command, args []string) error { + for cmd.HasParent() { + cmd = cmd.Parent() + if cmd.PersistentPreRunE != nil { + return cmd.PersistentPreRunE(cmd, args) + } + } + return nil +} + func EnableRepoOverride(cmd *cobra.Command, f *Factory) { cmd.PersistentFlags().StringP("repo", "R", "", "Select another repository using the `[HOST/]OWNER/REPO` format") + + cmd.PersistentPreRunE = func(cmd *cobra.Command, args []string) error { + if err := executeParentHooks(cmd, args); err != nil { + return err + } + repoOverride, _ := cmd.Flags().GetString("repo") + f.BaseRepo = OverrideBaseRepoFunc(f, repoOverride) + return nil + } } func OverrideBaseRepoFunc(f *Factory, override string) func() (ghrepo.Interface, error) {