Skip to content

gofor-little/env

Repository files navigation

A package for managing .env files and environment variables

GitHub tag (latest SemVer pre-release) GitHub go.mod Go version License: MIT GitHub Workflow Status Go Report Card PkgGoDev

Introduction

  • Read from and write to .env files
  • Get and set environment variables
  • No dependencies outside the standard library

Example

package main

import "github.com/gofor-little/env"

func main() {
	// Load an .env file and set the key-value pairs as environment variables.
	if err := env.Load("FILE_PATH"); err != nil {
		panic(err)
	}

	// Write a key-value pair to an .env file and call env.Set on it.
	if err := env.Write("KEY", "VALUE", "FILE_PATH", true); err != nil {
		panic(err)
	}

	// Get an environment variable's value with a default backup value.
	value := env.Get("KEY", "DEFAULT_VALUE")

	// Get an environment variable's value, receiving an error if it is not set or is empty.
	value, err := env.MustGet("KEY")
	if err != nil {
		panic(err)
	}

	// Set an environment variable locally.
	if err := env.Set("KEY", "VALUE"); err != nil {
		panic(err)
	}
}

Valid env variable examples

# This is a comment example

DB_NAME=dev_db # This is an inline comment example.
# Everything after the # is interpreted as a comment.

# DB_NAME=testing_db # This in an ignored env example

DB_PASSWORD="#db_password#secret" # This is a wrapped env example
# The # whitin double quotes is interpreted as the literal character 

Testing

Run go test ./... in the root directory.