Documentation
¶
Index ¶
- type Config
- func (c *Config) AllSettings() map[string]any
- func (c *Config) AllowEmptyEnv(allowEmptyEnv bool)
- func (c *Config) AutomaticEnv()
- func (c *Config) Bind(name string, data any)
- func (c *Config) BindAndListen(name string, data any, listener Listener)
- func (c *Config) BindWithTag(name string, data any, tagName string, ...)
- func (c *Config) Default(key string, defaultValue any) any
- func (c *Config) DefaultBool(key string, defaultValue bool) bool
- func (c *Config) DefaultDuration(key string, defaultValue time.Duration) time.Duration
- func (c *Config) DefaultFloat64(key string, defaultValue float64) float64
- func (c *Config) DefaultInt(key string, defaultValue int) int
- func (c *Config) DefaultInt32(key string, defaultValue int32) int32
- func (c *Config) DefaultInt64(key string, defaultValue int64) int64
- func (c *Config) DefaultIntSlice(key string, defaultValue []int) []int
- func (c *Config) DefaultSizeInBytes(key string, defaultValue uint) uint
- func (c *Config) DefaultString(key string, defaultValue string) string
- func (c *Config) DefaultStringMap(key string, defaultValue map[string]any) map[string]any
- func (c *Config) DefaultStringMapString(key string, defaultValue map[string]string) map[string]string
- func (c *Config) DefaultStringMapStringSlice(key string, defaultValue map[string][]string) map[string][]string
- func (c *Config) DefaultStringSlice(key string, defaultValue []string) []string
- func (c *Config) DefaultTime(key string, defaultValue time.Time) time.Time
- func (c *Config) DefaultUint(key string, defaultValue uint) uint
- func (c *Config) DefaultUint32(key string, defaultValue uint32) uint32
- func (c *Config) DefaultUint64(key string, defaultValue uint64) uint64
- func (c *Config) Get(key string) any
- func (c *Config) GetBool(key string) bool
- func (c *Config) GetDuration(key string) time.Duration
- func (c *Config) GetFloat64(key string) float64
- func (c *Config) GetInt(key string) int
- func (c *Config) GetInt32(key string) int32
- func (c *Config) GetInt64(key string) int64
- func (c *Config) GetIntSlice(key string) []int
- func (c *Config) GetSizeInBytes(key string) uint
- func (c *Config) GetString(key string) string
- func (c *Config) GetStringMap(key string) map[string]any
- func (c *Config) GetStringMapString(key string) map[string]string
- func (c *Config) GetStringMapStringSlice(key string) map[string][]string
- func (c *Config) GetStringSlice(key string) []string
- func (c *Config) GetTime(key string) time.Time
- func (c *Config) GetUint(key string) uint
- func (c *Config) GetUint32(key string) uint32
- func (c *Config) GetUint64(key string) uint64
- func (c *Config) Has(key string) bool
- func (c *Config) IsSet(key string) bool
- func (c *Config) Load() (err error)
- func (c *Config) OnChange(name string, listener Listener)
- func (c *Config) Register(names ...string)
- func (c *Config) RegisterNotification(notifications ...Notification)
- func (c *Config) Sub(key string) *viper.Viper
- func (c *Config) Watch()
- type Listener
- type Notification
- type Option
- func WithAllowEmptyEnv(allowEmptyEnv bool) Option
- func WithAutomaticEnv() Option
- func WithConfigPath(configPath string) Option
- func WithDecoderConfigOptions(options ...viper.DecoderConfigOption) Option
- func WithDefaultConfigType(configType string) Option
- func WithNotification(notifications ...Notification) Option
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// contains filtered or unexported fields
}
func NewConfig ¶
Example ¶
package main
import (
"github.com/ace-zhaoy/gviper"
)
func main() {
config := gviper.NewConfig(".", "app", "database.json", "log.toml")
// 加载配置文件
if err := config.Load(); err != nil {
panic(err)
}
// 监听配置文件变化(非阻塞)
config.Watch()
_ = config.GetString("app.name")
_ = config.GetInt("database.port")
_ = config.GetString("log.level")
}
Output:
func NewConfigWithOptions ¶
func (*Config) AllSettings ¶ added in v1.0.1
func (*Config) AllowEmptyEnv ¶
func (*Config) AutomaticEnv ¶
func (c *Config) AutomaticEnv()
func (*Config) Bind ¶
Example ¶
package main
import (
"github.com/ace-zhaoy/gviper"
)
func main() {
type LogConfig struct {
Type string `json:"type"`
Level string `json:"level"`
}
type AppConfig struct {
Name string `json:"name"`
}
config := gviper.NewConfig(".")
var lc LogConfig
var ac AppConfig
config.Bind("log.toml", &lc)
config.Bind("app", &ac)
_ = config.Load()
config.Watch()
_ = lc.Level
_ = ac.Name
}
Output:
Example (Register) ¶
package main
import (
"github.com/ace-zhaoy/gviper"
)
func main() {
type LogConfig struct {
Type string `json:"type"`
Level string `json:"level"`
}
type AppConfig struct {
Name string `json:"name"`
}
config := gviper.NewConfig(".", "log.toml", "app")
var lc LogConfig
var ac AppConfig
config.Bind("log", &lc)
config.Bind("app", &ac)
_ = config.Load()
config.Watch()
_ = lc.Level
_ = ac.Name
}
Output:
func (*Config) BindAndListen ¶ added in v1.0.4
func (*Config) BindWithTag ¶
func (c *Config) BindWithTag(name string, data any, tagName string, decoderConfigOptions ...viper.DecoderConfigOption)
Example ¶
package main
import (
"github.com/ace-zhaoy/gviper"
"github.com/mitchellh/mapstructure"
"time"
)
func main() {
type LogConfig struct {
Type string `yaml:"type"`
Level string `yaml:"level"`
}
type AppConfig struct {
Name string `yaml:"name"`
}
type DateConfig struct {
Date time.Time `yaml:"date"`
}
config := gviper.NewConfig(".")
var lc LogConfig
var ac AppConfig
var dc DateConfig
config.BindWithTag("log.toml", &lc, "yaml")
config.BindWithTag("app", &ac, "yaml")
config.BindWithTag("date", &dc, "yaml", func(d *mapstructure.DecoderConfig) {
d.DecodeHook = mapstructure.ComposeDecodeHookFunc(
d.DecodeHook,
mapstructure.StringToTimeDurationHookFunc(),
)
})
_ = config.Load()
config.Watch()
_ = lc.Level
_ = ac.Name
}
Output:
func (*Config) DefaultBool ¶ added in v1.0.2
func (*Config) DefaultDuration ¶ added in v1.0.2
func (*Config) DefaultFloat64 ¶ added in v1.0.2
func (*Config) DefaultInt ¶ added in v1.0.2
func (*Config) DefaultInt32 ¶ added in v1.0.2
func (*Config) DefaultInt64 ¶ added in v1.0.2
func (*Config) DefaultIntSlice ¶ added in v1.0.2
func (*Config) DefaultSizeInBytes ¶ added in v1.0.2
func (*Config) DefaultString ¶ added in v1.0.2
func (*Config) DefaultStringMap ¶ added in v1.0.2
func (*Config) DefaultStringMapString ¶ added in v1.0.2
func (*Config) DefaultStringMapStringSlice ¶ added in v1.0.2
func (*Config) DefaultStringSlice ¶ added in v1.0.2
func (*Config) DefaultTime ¶ added in v1.0.2
func (*Config) DefaultUint ¶ added in v1.0.2
func (*Config) DefaultUint32 ¶ added in v1.0.2
func (*Config) DefaultUint64 ¶ added in v1.0.2
func (*Config) GetFloat64 ¶
func (*Config) GetIntSlice ¶
func (*Config) GetSizeInBytes ¶
func (*Config) GetStringMapString ¶
func (*Config) GetStringMapStringSlice ¶
func (*Config) GetStringSlice ¶
func (*Config) Load ¶
Example ¶
package main
import (
"github.com/ace-zhaoy/gviper"
)
func main() {
config := gviper.NewConfig(".", "app", "database.json", "log.toml")
_ = config.Load()
}
Output:
func (*Config) Register ¶
Example ¶
package main
import (
"github.com/ace-zhaoy/gviper"
)
func main() {
config := gviper.NewConfig(".")
config.Register("app", "database.json", "log.toml")
// 加载配置文件
if err := config.Load(); err != nil {
panic(err)
}
// 监听配置文件变化(非阻塞)
config.Watch()
_ = config.GetString("app.name")
_ = config.GetInt("database.port")
_ = config.GetString("log.level")
}
Output:
func (*Config) RegisterNotification ¶
func (c *Config) RegisterNotification(notifications ...Notification)
Example ¶
package main
import (
"github.com/ace-zhaoy/gviper"
"github.com/ace-zhaoy/gviper/notifications"
)
func main() {
config := gviper.NewConfig(".", "app", "database.json", "log.toml")
config.RegisterNotification(
notifications.NewFeishuBotHook("https://open.feishu.cn/open-apis/bot/v2/hook/xxx"),
)
_ = config.Load()
config.Watch()
}
Output:
type Notification ¶
type Option ¶
type Option func(*Config)
func WithAllowEmptyEnv ¶
func WithAutomaticEnv ¶
func WithAutomaticEnv() Option
func WithConfigPath ¶
func WithDecoderConfigOptions ¶ added in v1.0.3
func WithDecoderConfigOptions(options ...viper.DecoderConfigOption) Option
func WithDefaultConfigType ¶
func WithNotification ¶
func WithNotification(notifications ...Notification) Option
Click to show internal directories.
Click to hide internal directories.