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 ¶
- Variables
- func DotEnv(values map[string]string) []byte
- type Code
- type Decoder
- type Encoder
- type Group
- func (g *Group) Add(v *Var) bool
- func (g *Group) Bytes() []byte
- func (g *Group) Get(key string) *Var
- func (g *Group) Key(key string) string
- func (g *Group) Len() int
- func (g *Group) MapEntries(k string) []string
- func (g *Group) MaskBytes() []byte
- func (g *Group) Name() string
- func (g *Group) SliceLength(k string) int
- func (g *Group) Values() map[string]*Var
- type PathWalker
- type Var
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( TextMarshallerT = reflect.TypeFor[encoding.TextMarshaler]() TextUnmarshallerT = reflect.TypeFor[encoding.TextUnmarshaler]() )
Functions ¶
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 )
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
func ParseGroupFromEnv ¶
func (*Group) MapEntries ¶
func (*Group) SliceLength ¶
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
Click to show internal directories.
Click to hide internal directories.