aboutsummaryrefslogtreecommitdiff
path: root/utils/env/parser.go
blob: c1fdb53de81ba31843dd22b2aab76cfbf4e38cc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package env

func Parse(config any) error {
	elem, t, err := validateConfigInput(config)
	if err != nil {
		return err
	}

	for i := range elem.NumField() {
		field := elem.Field(i)
		fieldType := t.Field(i)

		if !field.CanSet() {
			continue
		}

		envKey := fieldType.Tag.Get("env")
		defaultVal := fieldType.Tag.Get("default")

		if envKey == "" {
			continue
		}

		setFieldFromEnv(field, envKey, defaultVal)
	}

	return nil
}