GO: Config Files parsen

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

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.