A config file manager for Go that uses a defaults and overrides file.
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
Noah Petherbridge a57ab31b71 Initial commit 10 mesi fa
example Initial commit 10 mesi fa
LICENSE.md Initial commit 10 mesi fa
README.md Initial commit 10 mesi fa
go.mod Initial commit 10 mesi fa
go.sum Initial commit 10 mesi fa
yamlsettings.go Initial commit 10 mesi fa
yamlsettings_test.go Initial commit 10 mesi fa

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.