envsubst

Environment variables substitution for Go

Github星跟蹤圖

envsubst

GoDoc
License
Build status
Github All Releases

Environment variables substitution for Go. see docs below

Installation:

From binaries

Latest stable envsubst prebuilt binaries for 64-bit Linux, or Mac OS X are available via Github releases.

Linux and MacOS
curl -L https://github.com/a8m/envsubst/releases/download/v1.2.0/envsubst-`uname -s`-`uname -m` -o envsubst
chmod +x envsubst
sudo mv envsubst /usr/local/bin
Windows

Download the latest prebuilt binary from releases page, or if you have curl installed:

curl -L https://github.com/a8m/envsubst/releases/download/v1.2.0/envsubst.exe
With go

You can install via go get (provided you have installed go):

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 three 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.
Setting a -fail-fast flag in conjunction with either no-unset or no-empty or both will result in a faster feedback loop, this can be especially useful when running through a large file or byte array input, otherwise a list of errors is returned.

The flags and their restrictions are:, Option, Meaning, Type, Default, ------------, --------------, ------------, ------------, -i, input file, string, stdin, stdin, -o, output file, string, stdout, stdout, -no-unset, fail if a variable is not set, flag, false, -no-empty, fail if a variable is set but empty, flag, false, -fail-fast, fails at first occurence of an error, if -no-empty or -no-unset flags were not specified this is ignored, flag, false

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, $$var, Escape expressions. Result will be $var.

Most of the rows in this table were taken from here

See also

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

License

MIT

主要指標

概覽
名稱與所有者a8m/envsubst
主編程語言Go
編程語言Go (語言數: 1)
平台
許可證MIT License
所有者活动
創建於2016-04-28 16:03:12
推送於2025-02-26 19:44:28
最后一次提交2025-02-24 14:35:29
發布數8
最新版本名稱v1.4.3 (發布於 )
第一版名稱v1.0.0 (發布於 )
用户参与
星數824
關注者數6
派生數91
提交數50
已啟用問題?
問題數34
打開的問題數16
拉請求數21
打開的拉請求數6
關閉的拉請求數7
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?