Skip to content

a golang library to manage environment variables

License

Notifications You must be signed in to change notification settings

undefinedlabs/go-env

This branch is 4 commits ahead of, 37 commits behind Netflix/go-env:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7716d20 · Mar 2, 2020

History

18 Commits
May 22, 2018
May 22, 2018
May 25, 2018
May 25, 2018
Mar 2, 2020
Feb 28, 2020
May 25, 2018
May 25, 2018

Repository files navigation

go-env

Build Status GoDoc NetflixOSS Lifecycle

Package env provides an env struct field tag to marshal and unmarshal environment variables.

Usage

package main

import (
  "log"

  env "github.com/Netflix/go-env"
)

type Environment struct {
  Home string `env:"HOME"`

  Jenkins struct {
    BuildId     *string `env:"BUILD_ID"`
    BuildNumber int    `env:"BUILD_NUMBER"`
    Ci          bool   `env:"CI"`
  }

  Extras env.EnvSet
}

func main() {
  var environment env.Environment
  es, err := env.UnmarshalFromEnviron(&environment)
  if err != nil {
    log.Fatal(err)
  }
  // Remaining environment variables.
  environment.Extras = es

  // ...

  es, err = env.Marshal(environment)
  if err != nil {
    log.Fatal(err)
  }

  cs := env.ChangeSet{
    "HOME": "/tmp/edgarl",
    "BUILD_ID": nil,
    "BUILD_NUMBER": nil,
  }
  es.Apply(cs)

  environment = env.Environment{}
  err = env.Unmarshal(es, &environment)
  if err != nil {
    log.Fatal(err)
  }

  environment.Extras = es
}

About

a golang library to manage environment variables

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%