go-envparser

module
v0.0.0-...-0a897ee Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 10, 2022 License: MIT

README

go-envparser

Overview GoDoc Code Climate Go Report Card

go-envparser generates static DecodeEnv functions for structures in Go to decode environment variables, will implement the interface Decoder. The generated functions reduce the reliance upon runtime reflection to do serialization.

Getting Started

Installation
git clone https://github.com/gokultp/go-envparser.git
cd go-envparser
make

#check if the command is working
envparser version

should get an output in the following format

Version : V0.1.0
MinVersion : e3a5a007b94f51f46a64853f308e5a24daf98892
BuildTime : 2019-08-19T00:56:29+0530
Commands
envparser generate -s <structname> -f <filename>

It will generate a file with name <structname>decoder.go (Lowercase) consist of a DecodeEnv function which will be implementing the interface Decoder.

Example
package main

import (
	"fmt"

	"github.com/gokultp/go-envparser/pkg/envdecoder"
)

// Add go generate commands
//go:generate envparser generate -t GoEnv -f $GOFILE
// Dont forget to do goimport on generated files.
//go:generate goimports -w goenvdecoder.go
type GoEnv struct {
	Paths  Path
	GoRoot string `env:"GOROOT"`
}

//go:generate envparser generate -t Path -f $GOFILE
// Dont forget to do goimport on generated files.
//go:generate goimports -w pathdecoder.go
type Path struct {
	System []string `env:"PATH"`
	Go     string   `env:"GOPATH"`
}

func main() {
	env := GoEnv{}
	if err := envdecoder.Decode(&env); err != nil {
		panic(err)
	}
	fmt.Printf("%#v", env)
}

Here in the above file I have used go generate flags, will execute all the needed commands( envparser generate && goimports) in a single go generate command.

So here to generate the code execute

go generate

to run the code execute

go build
./<binary>

License

go-envparser is licensed under the MIT License

Directories

Path Synopsis
cmd
internal
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL