123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // Package config is an interface for dynamic configuration.
- package config
- import (
- "context"
- "gogs.baozhida.cn/zoie/OAuth-core/config/loader"
- "gogs.baozhida.cn/zoie/OAuth-core/config/reader"
- "gogs.baozhida.cn/zoie/OAuth-core/config/source"
- "gogs.baozhida.cn/zoie/OAuth-core/config/source/file"
- )
- // Config is an interface abstraction for dynamic configuration
- type Config interface {
- // Values provide the reader.Values interface
- reader.Values
- // Init the config
- Init(opts ...Option) error
- // Options in the config
- Options() Options
- // Close Stop the config loader/watcher
- Close() error
- // Load config sources
- Load(source ...source.Source) error
- // Sync Force a source changeset sync
- Sync() error
- // Watch a value for changes
- Watch(path ...string) (Watcher, error)
- }
- // Watcher is the config watcher
- type Watcher interface {
- Next() (reader.Value, error)
- Stop() error
- }
- // Entity 配置实体
- type Entity interface {
- OnChange()
- }
- // Options 配置的参数
- type Options struct {
- Loader loader.Loader
- Reader reader.Reader
- Source []source.Source
- // for alternative data
- Context context.Context
- Entity Entity
- }
- // Option 调用类型
- type Option func(o *Options)
- var (
- // DefaultConfig Default Config Manager
- DefaultConfig Config
- )
- // NewConfig returns new config
- func NewConfig(opts ...Option) (Config, error) {
- return newConfig(opts...)
- }
- // Bytes Return config as raw json
- func Bytes() []byte {
- return DefaultConfig.Bytes()
- }
- // Map Return config as a map
- func Map() map[string]interface{} {
- return DefaultConfig.Map()
- }
- // Scan values to a go type
- func Scan(v interface{}) error {
- return DefaultConfig.Scan(v)
- }
- // Sync Force a source changeset sync
- func Sync() error {
- return DefaultConfig.Sync()
- }
- // Get a value from the config
- func Get(path ...string) reader.Value {
- return DefaultConfig.Get(path...)
- }
- // Load config sources
- func Load(source ...source.Source) error {
- return DefaultConfig.Load(source...)
- }
- // Watch a value for changes
- func Watch(path ...string) (Watcher, error) {
- return DefaultConfig.Watch(path...)
- }
- // LoadFile is short hand for creating a file source and loading it
- func LoadFile(path string) error {
- return Load(file.NewSource(
- file.WithPath(path),
- ))
- }
|