package options import ( "dy-admin/pkg/comopts" "dy-admin/pkg/flagsets" "encoding/json" ) type Options struct { GenericServerRunOptions *comopts.ServerRunOptions `json:"server" mapstructure:"server"` InsecureServing *comopts.InsecureServingOptions `json:"insecure" mapstructure:"insecure"` MySQLOptions *comopts.MySQLOptions `json:"mysql" mapstructure:"mysql"` JwtOptions *comopts.JwtOptions `json:"jwt" mapstructure:"jwt"` FeatureOptions *comopts.FeatureOptions `json:"feature" mapstructure:"feature"` LogOptions *comopts.LogOptions `json:"log" mapstructure:"log"` CabinetConnectOptions *CabinetConnectOptions `json:"cabinet" mapstructure:"cabinet"` } func NewOptions() *Options { o := Options{ GenericServerRunOptions: comopts.NewServerRunOptions(), InsecureServing: comopts.NewInsecureServingOptions(), MySQLOptions: comopts.NewMySQLOptions(), JwtOptions: comopts.NewJwtOptions(), FeatureOptions: comopts.NewFeatureOptions(), LogOptions: comopts.NewLogOptions(), CabinetConnectOptions: NewCabinetConnectOptions(), } return &o } func (o *Options) Flags() (fss flagsets.NamedFlagSets) { o.GenericServerRunOptions.AddFlags(fss.FlagSet("generic")) o.JwtOptions.AddFlags(fss.FlagSet("jwt")) o.MySQLOptions.AddFlags(fss.FlagSet("mysql")) o.FeatureOptions.AddFlags(fss.FlagSet("features")) o.InsecureServing.AddFlags(fss.FlagSet("insecure serving")) o.LogOptions.AddFlags(fss.FlagSet("logs")) o.CabinetConnectOptions.AddFlags(fss.FlagSet("cabinet")) return fss } func (o *Options) Validate() []error { var errs []error errs = append(errs, o.GenericServerRunOptions.Validate()...) errs = append(errs, o.InsecureServing.Validate()...) errs = append(errs, o.MySQLOptions.Validate()...) errs = append(errs, o.JwtOptions.Validate()...) errs = append(errs, o.FeatureOptions.Validate()...) errs = append(errs, o.LogOptions.Validate()...) errs = append(errs, o.CabinetConnectOptions.Validate()...) return errs } func (o *Options) String() string { data, _ := json.Marshal(o) return string(data) } // Complete set default Options. func (o *Options) Complete() error { return nil }