github.com/kastenhq/syft@v0.0.0-20230821225854-0710af25cdbe/cmd/syft/cli/options/root.go (about) 1 package options 2 3 import ( 4 "github.com/spf13/cobra" 5 "github.com/spf13/pflag" 6 "github.com/spf13/viper" 7 ) 8 9 type RootOptions struct { 10 Config string 11 Quiet bool 12 Verbose int 13 } 14 15 var _ Interface = (*RootOptions)(nil) 16 17 func (o *RootOptions) AddFlags(cmd *cobra.Command, v *viper.Viper) error { 18 cmd.PersistentFlags().StringVarP(&o.Config, "config", "c", "", "application config file") 19 cmd.PersistentFlags().CountVarP(&o.Verbose, "verbose", "v", "increase verbosity (-v = info, -vv = debug)") 20 cmd.PersistentFlags().BoolVarP(&o.Quiet, "quiet", "q", false, "suppress all logging output") 21 22 return bindRootConfigOptions(cmd.PersistentFlags(), v) 23 } 24 25 //nolint:revive 26 func bindRootConfigOptions(flags *pflag.FlagSet, v *viper.Viper) error { 27 if err := v.BindPFlag("config", flags.Lookup("config")); err != nil { 28 return err 29 } 30 if err := v.BindPFlag("verbosity", flags.Lookup("verbose")); err != nil { 31 return err 32 } 33 if err := v.BindPFlag("quiet", flags.Lookup("quiet")); err != nil { 34 return err 35 } 36 return nil 37 }