From 78741072bd39cd10f64d180992773e11a5a6c0ed Mon Sep 17 00:00:00 2001 From: Hector Fernandez Date: Tue, 18 Oct 2022 20:15:35 +0200 Subject: [PATCH] fix: cosign flags been ignored Signed-off-by: Hector Fernandez --- cmd/cosign/cli/options/root.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cmd/cosign/cli/options/root.go b/cmd/cosign/cli/options/root.go index 4baa32695ff0..6b670722931a 100644 --- a/cmd/cosign/cli/options/root.go +++ b/cmd/cosign/cli/options/root.go @@ -53,12 +53,27 @@ func (o *RootOptions) AddFlags(cmd *cobra.Command) { } func BindViper(cmd *cobra.Command, args []string) { + callPersistentPreRun(cmd, args) v := viper.New() v.SetEnvPrefix(EnvPrefix) v.AutomaticEnv() bindFlags(cmd, v) } +// callPersistentPreRun calls parent commands. PersistentPreRun +// does not call parents PersistentPreRun functions +func callPersistentPreRun(cmd *cobra.Command, args []string) { + if parent := cmd.Parent(); parent != nil { + if parent.PersistentPreRun != nil { + parent.PersistentPreRun(parent, args) + } + if parent.PersistentPreRunE != nil { + parent.PersistentPreRunE(parent, args) + } + callPersistentPreRun(parent, args) + } +} + func bindFlags(cmd *cobra.Command, v *viper.Viper) { cmd.Flags().VisitAll(func(f *pflag.Flag) { if strings.Contains(f.Name, "-") {