package config import ( "sync/atomic" "github.com/akyaiy/GSfass/core/config" ) type ServerConfig struct { Port int `mapstructure:"port"` Addr string `mapstructure:"address"` StaticFilesPath string `mapstructure:"static_dir"` LogPath string `mapstructure:"log_path"` } type Config struct { Server ServerConfig `mapstructure:"server"` } var configPath atomic.Value // string var defaults = map[string]any{ "server.port": 8080, "server.address": "127.0.0.0", "server.static_dir": "./static", } func read(cfg *Config) error { return config.Read().Config().FilePath(configPath.Load().(string)).SetBy(cfg).SetDefaults(defaults).End() } func LoadConfig(path string) (*Config, error) { configPath.Store(path) var cfg Config err := read(&cfg) if err != nil { return nil, err } return &cfg, nil } func ReloadConfig(cfg *Config) error { return read(cfg) }