env

package module
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2023 License: MIT Imports: 12 Imported by: 6

README

Env

This is a small go module that helps with environment variables.

  • Load environment files .env
  • Provides fallback variables
  • uses slog
  • no dependencies

Based on https://github.com/joho/godotenv

Installation

go get github.com/SbstnErhrdt/env

Usage

Put a .env file in the working directory. This might look like this

KEY=value1234

In your main() funcion:

func main() {
// load env
env.LoadEnvFiles() // reads the .env file in the working directory
...
}

If no filename is provided, the file .env in the working directory is used.

Load env files

Loads different env files. Prints warnings if the files not present.

...
env.LoadEnvFiles(filenames ...string)
...

Specify filename:

...
env.LoadEnvFiles("production.enbv")
...
Fallback environment variables

Sets fallback variables for env variables.

...
env.FallbackEnvVariable("environmentVariableKey", "fallbackValue")
...
Required variables check

Checks if there are required environment variables not set.

...
env.CheckRequiredEnvironmentVariables("environmentVariableKey0", "environmentVariableKey1")
...
Optional variables check

Checks if there are optional environment variables not set.

...
env.CheckOptionalEnvironmentVariables("environmentVariableKey0", "environmentVariableKey1")
...
Required variable check and return

Checks if there are optional environment variables not set.

...
varName := env.RequiredEnvVariable("environmentVariableKey0")
...

Documentation

Overview

Package env is a go port of the ruby dotenv library (https://github.com/bkeepers/dotenv)

Examples/readme can be found on the GitHub page at https://github.com/joho/godotenv

The TL;DR is that you make a .env file that looks something like

SOME_ENV_VAR=somevalue

and then in your go code you can call

env.Load()

and all the env vars declared in .env will be available through os.Getenv("SOME_ENV_VAR")

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckOptionalEnvironmentVariables

func CheckOptionalEnvironmentVariables(possibleEnvironmentVariables ...string)

CheckOptionalEnvironmentVariables checks if

func CheckRequiredEnvironmentVariables

func CheckRequiredEnvironmentVariables(requiredEnvironmentVariables ...string)

CheckRequiredEnvironmentVariables checks if environment variables are present panics if one is missing

func Exec added in v1.0.3

func Exec(filenames []string, cmd string, cmdArgs []string, overload bool) error

Exec loads env vars from the specified filenames (empty map falls back to default) then executes the cmd specified.

Simply hooks up os.Stdin/err/out to the command and calls Run().

If you want more fine grained control over your command it's recommended that you use `Load()`, `Overload()` or `Read()` and the `os/exec` package yourself.

func FallbackEnvVariable

func FallbackEnvVariable(envKey, fallbackValue string) string

FallbackEnvVariable returns the value of the environment variable with the given key.

func Load added in v1.0.3

func Load(filenames ...string) (err error)

Load will read your env file(s) and load them into ENV for this process.

Call this function as close as possible to the start of your program (ideally in main).

If you call Load without any args it will default to loading .env in the current path.

You can otherwise tell it which files to load (there can be more than one) like:

env.Load("fileone", "filetwo")

It's important to note that it WILL NOT OVERRIDE an env variable that already exists - consider the .env file to set dev vars or sensible defaults.

func LoadEnvFiles

func LoadEnvFiles(filenames ...string)

func Marshal added in v1.0.3

func Marshal(envMap map[string]string) (string, error)

Marshal outputs the given environment as a dotenv-formatted environment file. Each line is in the format: KEY="VALUE" where VALUE is backslash-escaped.

func Overload added in v1.0.3

func Overload(filenames ...string) (err error)

Overload will read your env file(s) and load them into ENV for this process.

Call this function as close as possible to the start of your program (ideally in main).

If you call Overload without any args it will default to loading .env in the current path.

You can otherwise tell it which files to load (there can be more than one) like:

env.Overload("fileone", "filetwo")

It's important to note this WILL OVERRIDE an env variable that already exists - consider the .env file to forcefully set all vars.

func Parse added in v1.0.3

func Parse(r io.Reader) (map[string]string, error)

Parse reads an env file from io.Reader, returning a map of keys and values.

func Read added in v1.0.3

func Read(filenames ...string) (envMap map[string]string, err error)

Read all env (with same file loading semantics as Load) but return values as a map rather than automatically writing values into env

func RequiredEnvVariable added in v1.0.3

func RequiredEnvVariable(name string) string

RequiredEnvVariable returns the value of the environment variable with the given key.

func Unmarshal added in v1.0.3

func Unmarshal(str string) (envMap map[string]string, err error)

Unmarshal reads an env file from a string, returning a map of keys and values.

func UnmarshalBytes added in v1.0.3

func UnmarshalBytes(src []byte) (map[string]string, error)

UnmarshalBytes parses env file from byte slice of chars, returning a map of keys and values.

func Write added in v1.0.3

func Write(envMap map[string]string, filename string) error

Write serializes the given environment and writes it to a file.

Types

This section is empty.

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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