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  }