github.com/vseinstrumentiru/lego@v1.0.2/internal/lego/config/config.go (about)

     1  package config
     2  
     3  import (
     4  	"emperror.dev/errors"
     5  	"github.com/spf13/pflag"
     6  	"github.com/spf13/viper"
     7  	lego2 "github.com/vseinstrumentiru/lego/internal/lego"
     8  	"github.com/vseinstrumentiru/lego/internal/lego/build"
     9  	"github.com/vseinstrumentiru/lego/internal/lego/monitor"
    10  	"github.com/vseinstrumentiru/lego/internal/lego/transport/event"
    11  	"github.com/vseinstrumentiru/lego/internal/lego/transport/grpc"
    12  	"github.com/vseinstrumentiru/lego/internal/lego/transport/http"
    13  	"time"
    14  )
    15  
    16  type WithSwitch = lego2.WithSwitch
    17  
    18  type Config struct {
    19  	Name            string
    20  	DataCenter      string
    21  	Host            string
    22  	Env             string
    23  	Debug           bool
    24  	Http            http.Config
    25  	Grpc            grpc.Config
    26  	Events          event.Config
    27  	Monitor         monitor.Config
    28  	ShutdownTimeout time.Duration
    29  
    30  	Build  build.Info
    31  	Custom lego2.Config `mapstructure:"-"`
    32  }
    33  
    34  func (c Config) Validate() (err error) {
    35  	if c.Name == "" {
    36  		err = errors.Append(err, errors.New("srv.name required"))
    37  	}
    38  
    39  	err = errors.Append(err, c.Http.Validate())
    40  	err = errors.Append(err, c.Grpc.Validate())
    41  	err = errors.Append(err, c.Events.Validate())
    42  	err = errors.Append(err, c.Monitor.Validate())
    43  
    44  	if c.Custom != nil {
    45  		err = errors.Append(err, c.Custom.Validate())
    46  	}
    47  
    48  	return
    49  }
    50  
    51  func (c Config) SetDefaults(env *viper.Viper, flag *pflag.FlagSet) {
    52  	env.SetDefault("srv.env", "dev")
    53  	env.SetDefault("srv.debug", false)
    54  	env.SetDefault("srv.host", "localhost")
    55  	env.SetDefault("srv.shutdownTimeout", 15*time.Second)
    56  
    57  	c.Http.SetDefaults(env, flag)
    58  	c.Grpc.SetDefaults(env, flag)
    59  	c.Events.SetDefaults(env, flag)
    60  	c.Monitor.SetDefaults(env, flag)
    61  }