Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

a8m/envsubst

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

envsubst Build status License GoDoc

Environment variables substitution for Go. see docs below

Installation:

$ go get github.com/a8m/envsubst/cmd/envsubst

Using via cli

$ envsubst < input.tmpl > output.text
$ echo 'welcome $HOME ${USER:=a8m}' | envsubst
$ envsubst -help

Imposing restrictions

There are two command line flags with which you can cause the substitution to stop with an error code, should the restriction associated with the flag not be met. This can be handy if you want to avoid creating e.g. configuration files with unset or empty parameters. The flags and their restrictions are:

Flag Meaning
-no-unset fail if a variable is not set
-no-empty fail if a variable is set but empty

These flags can be combined to form tighter restrictions.

Using envsubst programmatically ?

You can take a look on _example/main or see the example below.

package main

import (
	"fmt"
	"github.com/a8m/envsubst"
)

func main() {
    input := "welcom $HOME"
    str, err := envsubst.String(input)
    // ...
    buf, err := envsubst.Bytes([]byte(input))
    // ...
    buf, err := envsubst.ReadFile("filename")
}

Docs

api docs here: GoDoc

Expression Meaning
${var} Value of var (same as $var)
${var-$DEFAULT} If var not set, evaluate expression as $DEFAULT
${var:-$DEFAULT} If var not set or is empty, evaluate expression as $DEFAULT
${var=$DEFAULT} If var not set, evaluate expression as $DEFAULT
${var:=$DEFAULT} If var not set or is empty, evaluate expression as $DEFAULT
${var+$OTHER} If var set, evaluate expression as $OTHER, otherwise as empty string
${var:+$OTHER} If var set, evaluate expression as $OTHER, otherwise as empty string
table taken from here

See also

  • os.ExpandEnv(s string) string - only supports $var and ${var} notations

License

MIT