Skip to content

rejchev/enve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ENVE

An extended, too simple, zero-dependencies library to parse environment variables into structs

Test & Build Go Reference Go Report Card

About

An extended, too simple, zero-dependencies library to parse environment variables into structs.
Library provides interfaces for implementing and using environment variable sources, allowing you to use multiple environment variable sources at once.
Enve based on encoding/json lib

Installation

go get github.com/rejchev/enve

Usage

type config struct {
    AppName string  `json:"APP_NAME"`
    IsDebug bool    `json:"IS_DEBUG,string"`    
}

c := config{}

// Using os.Environ() as envs source
err := enve.Parse(&c, new(enve.EnvironSource))

// Using io.Reader as envs source
envs := "APP_NAME=testname\n" +
        "IS_DEBUG=true"

reader := strings.Reader(envs)

err := enve.Parse(&c, enve.NewReaderSource(reader))

// Using combines of sources
err := enve.Parse(&c, enve.NewReaderSource(reader), new(enve.EnvironSource))

// Using custom source
var _ enve.IEnveSource = (*CustomEnveSource)(nil)

type CustomEnveSource byte

func (e *EnvironSource) GetEnvs() (map[string]string, error) {
    m := make(map[string]string)

    // some logic
    
    return m, nil
}

err := enve.Parse(&c, new(CustomEnveSource))