github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/cmd/gosbom/cli/options/oidc.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  const DefaultOIDCIssuerURL = "https://oauth2.sigstore.dev/auth"
    10  
    11  // OIDCOptions is the wrapper for OIDC related options.
    12  type OIDCOptions struct {
    13  	Issuer      string
    14  	ClientID    string
    15  	RedirectURL string
    16  }
    17  
    18  var _ Interface = (*OIDCOptions)(nil)
    19  
    20  // AddFlags implements Interface
    21  func (o *OIDCOptions) AddFlags(cmd *cobra.Command, v *viper.Viper) error {
    22  	cmd.Flags().StringVar(&o.Issuer, "oidc-issuer", DefaultOIDCIssuerURL,
    23  		"OIDC provider to be used to issue ID token")
    24  
    25  	cmd.Flags().StringVar(&o.ClientID, "oidc-client-id", "sigstore",
    26  		"OIDC client ID for application")
    27  
    28  	cmd.Flags().StringVar(&o.RedirectURL, "oidc-redirect-url", "",
    29  		"OIDC redirect URL (Optional)")
    30  
    31  	return bindOIDCConfigOptions(cmd.Flags(), v)
    32  }
    33  
    34  //nolint:revive
    35  func bindOIDCConfigOptions(flags *pflag.FlagSet, v *viper.Viper) error {
    36  	if err := v.BindPFlag("attest.oidc-issuer", flags.Lookup("oidc-issuer")); err != nil {
    37  		return err
    38  	}
    39  
    40  	if err := v.BindPFlag("attest.oidc-client-id", flags.Lookup("oidc-client-id")); err != nil {
    41  		return err
    42  	}
    43  
    44  	if err := v.BindPFlag("attest.oidc-redirect-url", flags.Lookup("oidc-redirect-url")); err != nil {
    45  		return err
    46  	}
    47  
    48  	return nil
    49  }