在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:jinzhu/configor开源软件地址:https://github.com/jinzhu/configor开源编程语言:Go 100.0%开源软件介绍:ConfigorGolang Configuration tool that support YAML, JSON, TOML, Shell Environment (Supports Go 1.10+) Usagepackage main
import (
"fmt"
"github.com/jinzhu/configor"
)
var Config = struct {
APPName string `default:"app name"`
DB struct {
Name string
User string `default:"root"`
Password string `required:"true" env:"DBPassword"`
Port uint `default:"3306"`
}
Contacts []struct {
Name string
Email string `required:"true"`
}
}{}
func main() {
configor.Load(&Config, "config.yml")
fmt.Printf("config: %#v", Config)
} With configuration file config.yml: appname: test
db:
name: test
user: test
password: test
port: 1234
contacts:
- name: i test
email: [email protected] Debug Mode & Verbose ModeDebug/Verbose mode is helpful when debuging your application, // Enable debug mode or set env `CONFIGOR_DEBUG_MODE` to true when running your application
configor.New(&configor.Config{Debug: true}).Load(&Config, "config.json")
// Enable verbose mode or set env `CONFIGOR_VERBOSE_MODE` to true when running your application
configor.New(&configor.Config{Verbose: true}).Load(&Config, "config.json") Auto Reload ModeConfigor can auto reload configuration based on time // auto reload configuration every second
configor.New(&configor.Config{AutoReload: true}).Load(&Config, "config.json")
// auto reload configuration every minute
configor.New(&configor.Config{AutoReload: true, AutoReloadInterval: time.Minute}).Load(&Config, "config.json") Auto Reload Callback configor.New(&configor.Config{AutoReload: true, AutoReloadCallback: func(config interface{}) {
fmt.Printf("%v changed", config)
}}).Load(&Config, "config.json") Advanced Usage
// Earlier configurations have higher priority
configor.Load(&Config, "application.yml", "database.json")
Return an error on finding keys in the config file that do not match any fields in the config struct. In the example below, an error will be returned if config.toml contains keys that do not match any fields in the ConfigStruct struct. If ErrorOnUnmatchedKeys is not set, it defaults to false. Note that for json files, setting ErrorOnUnmatchedKeys to true will have an effect only if using go 1.10 or later. err := configor.New(&configor.Config{ErrorOnUnmatchedKeys: true}).Load(&ConfigStruct, "config.toml")
Use // config.go
configor.Load(&Config, "config.json")
$ go run config.go
// Will load `config.json`, `config.development.json` if it exists
// `config.development.json` will overwrite `config.json`'s configuration
// You could use this to share same configuration across different environments
$ CONFIGOR_ENV=production go run config.go
// Will load `config.json`, `config.production.json` if it exists
// `config.production.json` will overwrite `config.json`'s configuration
$ go test
// Will load `config.json`, `config.test.json` if it exists
// `config.test.json` will overwrite `config.json`'s configuration
$ CONFIGOR_ENV=production go test
// Will load `config.json`, `config.production.json` if it exists
// `config.production.json` will overwrite `config.json`'s configuration // Set environment by config
configor.New(&configor.Config{Environment: "production"}).Load(&Config, "config.json")
// config.go
configor.Load(&Config, "config.yml")
$ go run config.go
// Will load `config.example.yml` automatically if `config.yml` not found and print warning message
$ CONFIGOR_APPNAME="hello world" CONFIGOR_DB_NAME="hello world" go run config.go
// Load configuration from shell environment, it's name is {{prefix}}_FieldName // You could overwrite the prefix with environment CONFIGOR_ENV_PREFIX, for example:
$ CONFIGOR_ENV_PREFIX="WEB" WEB_APPNAME="hello world" WEB_DB_NAME="hello world" go run config.go
// Set prefix by config
configor.New(&configor.Config{ENVPrefix: "WEB"}).Load(&Config, "config.json")
Add the type Details struct {
Description string
}
type Config struct {
Details `anonymous:"true"`
} With the
func main() {
config := flag.String("file", "config.yml", "configuration file")
flag.StringVar(&Config.APPName, "name", "", "app name")
flag.StringVar(&Config.DB.Name, "db-name", "", "database name")
flag.StringVar(&Config.DB.User, "db-user", "root", "database user")
flag.Parse()
os.Setenv("CONFIGOR_ENV_PREFIX", "-")
configor.Load(&Config, *config)
// configor.Load(&Config) // only load configurations from shell env & flag
} ContributingYou can help to make the project better, check out http://gorm.io/contribute.html for things you can do. Authorjinzhu LicenseReleased under the MIT License |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论