envx

package
v0.2.18 Latest Latest
Warning

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

Go to latest
Published: Jan 16, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Code generated by genx:code DO NOT EDIT.

Example (Env)
envs := [][2]string{
	{"EXAMPLE__ADDRESS_Address", "asset://group/filename.png"},
	{"EXAMPLE__DATABASE_0_Address", "mysql://u:p@host1:3306/db1?ssl=off"},
	{"EXAMPLE__DATABASE_1_Address", "mysql://u:p@host2:3306/db2?ssl=off"},
	{"EXAMPLE__Endpoint_Address", "http://username:password@localhost:8888/root?key=value1&key=value2"},
	{"EXAMPLE__Password", "password"},
	{"EXAMPLE__REDIS_instance1_Address", "redis://u1:p1@host1:3306/1"},
	{"EXAMPLE__REDIS_instance2_Address", "redis://u2:p2@host2:3306/2"},
}
for _, v := range envs {
	_ = os.Setenv(v[0], v[1])
}

defer func() {
	for _, v := range envs {
		_ = os.Unsetenv(v[0])
	}
}()

target := TestData{}

// read configurations from env vars and decode to target
dec := envx.NewDecoder(envx.ParseGroupFromEnv("EXAMPLE"))
must.NoError(dec.Decode(&target))

// encode target
grp := envx.NewGroup("EXAMPLE")
enc := envx.NewEncoder(grp)
must.NoError(enc.Encode(target))

// output dotenv raw and masked
fmt.Println(string(grp.Bytes()))
fmt.Println(string(grp.MaskBytes()))
Output:

EXAMPLE__ADDRESS_Address=asset://group/filename.png
EXAMPLE__ADDRESS_Auth_DecryptKeyEnv=PASSWORD_DEC_KEY
EXAMPLE__ADDRESS_Auth_Password=
EXAMPLE__ADDRESS_Auth_Username=
EXAMPLE__ADDRESS_Cert_CA=
EXAMPLE__ADDRESS_Cert_Crt=
EXAMPLE__ADDRESS_Cert_Key=
EXAMPLE__Endpoint_Address=http://username:password@localhost:8888/root?key=value1&key=value2
EXAMPLE__Endpoint_Auth_DecryptKeyEnv=PASSWORD_DEC_KEY
EXAMPLE__Endpoint_Auth_Password=
EXAMPLE__Endpoint_Auth_Username=
EXAMPLE__Endpoint_Cert_CA=
EXAMPLE__Endpoint_Cert_Crt=
EXAMPLE__Endpoint_Cert_Key=
EXAMPLE__NilPointer=0
EXAMPLE__Password=password
EXAMPLE__REDIS_instance1_Address=redis://u1:p1@host1:3306/1
EXAMPLE__REDIS_instance1_Auth_DecryptKeyEnv=PASSWORD_DEC_KEY
EXAMPLE__REDIS_instance1_Auth_Password=
EXAMPLE__REDIS_instance1_Auth_Username=
EXAMPLE__REDIS_instance1_Cert_CA=
EXAMPLE__REDIS_instance1_Cert_Crt=
EXAMPLE__REDIS_instance1_Cert_Key=
EXAMPLE__REDIS_instance2_Address=redis://u2:p2@host2:3306/2
EXAMPLE__REDIS_instance2_Auth_DecryptKeyEnv=PASSWORD_DEC_KEY
EXAMPLE__REDIS_instance2_Auth_Password=
EXAMPLE__REDIS_instance2_Auth_Username=
EXAMPLE__REDIS_instance2_Cert_CA=
EXAMPLE__REDIS_instance2_Cert_Crt=
EXAMPLE__REDIS_instance2_Cert_Key=

EXAMPLE__ADDRESS_Address=asset://group/filename.png
EXAMPLE__ADDRESS_Auth_DecryptKeyEnv=PASSWORD_DEC_KEY
EXAMPLE__ADDRESS_Auth_Password=--------
EXAMPLE__ADDRESS_Auth_Username=
EXAMPLE__ADDRESS_Cert_CA=
EXAMPLE__ADDRESS_Cert_Crt=
EXAMPLE__ADDRESS_Cert_Key=
EXAMPLE__Endpoint_Address=http://username:password@localhost:8888/root?key=value1&key=value2
EXAMPLE__Endpoint_Auth_DecryptKeyEnv=PASSWORD_DEC_KEY
EXAMPLE__Endpoint_Auth_Password=--------
EXAMPLE__Endpoint_Auth_Username=
EXAMPLE__Endpoint_Cert_CA=
EXAMPLE__Endpoint_Cert_Crt=
EXAMPLE__Endpoint_Cert_Key=
EXAMPLE__NilPointer=0
EXAMPLE__Password=--------
EXAMPLE__REDIS_instance1_Address=redis://u1:p1@host1:3306/1
EXAMPLE__REDIS_instance1_Auth_DecryptKeyEnv=PASSWORD_DEC_KEY
EXAMPLE__REDIS_instance1_Auth_Password=--------
EXAMPLE__REDIS_instance1_Auth_Username=
EXAMPLE__REDIS_instance1_Cert_CA=
EXAMPLE__REDIS_instance1_Cert_Crt=
EXAMPLE__REDIS_instance1_Cert_Key=
EXAMPLE__REDIS_instance2_Address=redis://u2:p2@host2:3306/2
EXAMPLE__REDIS_instance2_Auth_DecryptKeyEnv=PASSWORD_DEC_KEY
EXAMPLE__REDIS_instance2_Auth_Password=--------
EXAMPLE__REDIS_instance2_Auth_Username=
EXAMPLE__REDIS_instance2_Cert_CA=
EXAMPLE__REDIS_instance2_Cert_Crt=
EXAMPLE__REDIS_instance2_Cert_Key=

Index

Examples

Constants

This section is empty.

Variables

View Source
var (
	TextMarshallerT   = reflect.TypeFor[encoding.TextMarshaler]()
	TextUnmarshallerT = reflect.TypeFor[encoding.TextUnmarshaler]()
)

Functions

func DotEnv

func DotEnv(values map[string]string) []byte

Types

type Code

type Code int8

Code defines env parsing error code +genx:code @def envx.Error

const (
	CODE_UNDEFINED                     Code = iota + 1
	CODE__DEC_INVALID_VALUE                 // cannot set value
	CODE__DEC_INVALID_VALUE_CANNOT_SET      // nil value
	CODE__DEC_INVALID_MAP_KEY_TYPE          // invalid map key type, expect alphabet string or positive integer
	CODE__DEC_FAILED_UNMARSHAL              // failed to unmarshal
	CODE__ENC_INVALID_MAP_KEY_TYPE          // invalid map key type, expect alphabet string or positive integer
	CODE__ENC_INVALID_MAP_KEY_VALUE         // invalid map key value, expect alphabet string or positive integer
	CODE__ENC_INVALID_ENV_KEY               // invalid env key, expect alphabet string
	CODE__ENC_FAILED_MARSHAL                // failed to marshal
	CODE__ENC_DUPLICATE_GROUP_KEY           // group key duplicated
)

func (Code) Message

func (e Code) Message() string

type Decoder

type Decoder struct {
	// contains filtered or unexported fields
}

func NewDecoder

func NewDecoder(g *Group) *Decoder

func (*Decoder) Decode

func (d *Decoder) Decode(v any) error

type Encoder

type Encoder struct {
	// contains filtered or unexported fields
}

func NewEncoder

func NewEncoder(g *Group) *Encoder

func (*Encoder) Encode

func (d *Encoder) Encode(v any) error

type Group

type Group struct {
	// contains filtered or unexported fields
}

func NewGroup

func NewGroup(name string) *Group

func ParseGroupFromEnv

func ParseGroupFromEnv(prefix string) *Group

func (*Group) Add

func (g *Group) Add(v *Var) bool

func (*Group) Bytes

func (g *Group) Bytes() []byte

func (*Group) Get

func (g *Group) Get(key string) *Var

func (*Group) Key

func (g *Group) Key(key string) string

func (*Group) Len

func (g *Group) Len() int

func (*Group) MapEntries

func (g *Group) MapEntries(k string) []string

func (*Group) MaskBytes

func (g *Group) MaskBytes() []byte

func (*Group) Name

func (g *Group) Name() string

func (*Group) SliceLength

func (g *Group) SliceLength(k string) int

func (*Group) Values

func (g *Group) Values() map[string]*Var

type PathWalker

type PathWalker struct {
	// contains filtered or unexported fields
}

func NewPathWalker

func NewPathWalker() *PathWalker

func (*PathWalker) Enter

func (pw *PathWalker) Enter(i any)

func (*PathWalker) Leave

func (pw *PathWalker) Leave()

func (*PathWalker) Paths

func (pw *PathWalker) Paths() []any

func (*PathWalker) String

func (pw *PathWalker) String() string

type Var

type Var struct {
	// contains filtered or unexported fields
}

func NewVar

func NewVar(key, val string) *Var

func (*Var) Key

func (v *Var) Key() string

func (*Var) Optional

func (v *Var) Optional() bool

func (*Var) Value

func (v *Var) Value() string

Jump to

Keyboard shortcuts

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