A minimalistic version of spf13/viper.
Files
README.md

tinyviper #

A minimalistic version of spf13/viper.

This is a copy from the amazing tiny-viper project.

The module here differs only in that it has a non-github module path, since I want to contribute to unlinking from bigtech.

Installation #

go get thegabriel.eu/tinyviper@latest

Features #

  • Read ENV variables into a struct
  • Read a .env file into a struct
  • < 110 source lines of code
  • No dependencies

Only string fields are supported. Allows missing env variables when marked with "omitempty"

Usage #

package main

import (
	"thegabriel.eu/tinyviper"
	"fmt"
)

type Config struct {
	UserConfig struct {
		Email    string `env:"MY_APP_EMAIL"`
		Password string `env:"MY_APP_PASSWORD"`
		someOtherProperty string
	}
	Endpoint string `env:"MY_APP_ENDPOINT"`
	AppUrl string `env:MY_APP_URL,omitempty`
}

func main() {
  cfg := Config{Endpoint: "some default endpoint"}
  err := tinyviper.LoadFromResolver(&cfg, tinyviper.NewEnvResolver(), tinyviper.NewEnvFileResolver(".env.sample"))
  if err != nil {
    panic(err)
  }

  fmt.Println("%+v", cfg)
}