A config file manager for Go that uses a defaults and overrides file.
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
Noah Petherbridge a57ab31b71 Initial commit hace 10 meses
example Initial commit hace 10 meses
LICENSE.md Initial commit hace 10 meses
README.md Initial commit hace 10 meses
go.mod Initial commit hace 10 meses
go.sum Initial commit hace 10 meses
yamlsettings.go Initial commit hace 10 meses
yamlsettings_test.go Initial commit hace 10 meses

README.md

YamlSettings for Go

This is a config file manager for Go, inspired by Python yamlsettings.

Example

Your Go code:

import "git.kirsle.net/go/yamlsettings"

// Typedef for your config object.
type Config struct {
    Database struct {
        Host string `yaml:"host"`
        Port string `yaml:"port"`
        User string `yaml:"user"`
        Password string `yaml:"passwd"`
    } `yaml:"database"`

    Redis struct {
        Host string `yaml:"redis_host"`
        Port int `yaml:"redis_port"`
    } `yaml:"redis"`

    Debug bool `yaml:"DEBUG"`
    SecretKey string `yaml:"SECRET_KEY"`
}

func main() {
    // Marshal your app config from the defaults + settings files.
    // Only the defaults.yml should exist on disk; the settings.yml is
    // optional and will be ignored if not found.
    var setting Config
    err := yamlsettings.LoadFiles(
        "defaults.yml", "settings.yml",
        &setting,
    )
    if err != nil {
        panic(err)
    }

    fmt.Printf("Redis host: %s\n", settings.Redis.Host)
}

Your defaults.yml file can be committed to version control. It uses sensible defaults and has dummy text in place of passwords and needed configuration:

---
database:
  host: "localhost"
  port: 5432
  user: "postgres"
  passwd: "postgres"
redis:
  host: "localhost"
  port: 6379
DEBUG: false
SECRET_KEY: "!! CHANGE ME !!"

The settings.yml file can override values from the defaults file. This file goes in your .gitignore to avoid accidentally committing secrets to version control!

---
database:
  host: "pgprod.example.com"
  user: "pgprod_admin"
  passwd: "big secret long password"
SECRET_KEY: "fd09s0sfv0dhgf098sasd"

License

MIT. © 2020 Noah Petherbridge.