Viper ist eine Library welche diverse Formate an Configfiles parsen kann und ENV Variablen lesen kann.
Installation von viper
go get github.com/spf13/viper
Beispiel Configfile (test.config) im ENV Format
USER=user_name PASSWORD=pass_word REALM=test_realm
Beispiel Script
package main
import (
"fmt"
"log"
"github.com/spf13/viper"
)
type cnf struct {
User string
Password string
Realm string
}
var C cnf
func main() {
// Read config file from config file
viper.AddConfigPath(".")
viper.SetConfigName("test.config")
viper.SetConfigType("env")
viper.ReadInConfig()
viper.AutomaticEnv()
err := viper.Unmarshal(&C)
if err != nil {
log.Fatalf("unable to decode config, %v", err)
}
fmt.Printf("Username: %v\n", C.User)
fmt.Printf("Passwort: %v\n", C.Password)
fmt.Printf("Realm: %v\n", C.Realm)
}
AutomaticEnv ließt zur Laufzeit Umgebungsvariablen ein, es folgt nach dem Lesen des Configfiles somit werden die Werte aus dem Configfile überschrieben.
Beispiel CLI
./testapp Username: user_name Passwort: pass_word Realm: test_realm USER=lalala PASSWORD=pass1234 REALM=real1234 ./testapp Username: lalala Passwort: pass1234 Realm: real1234
