summaryrefslogtreecommitdiff
path: root/utils/env/parsers.go
diff options
context:
space:
mode:
Diffstat (limited to 'utils/env/parsers.go')
-rw-r--r--utils/env/parsers.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/utils/env/parsers.go b/utils/env/parsers.go
new file mode 100644
index 0000000..c1fdb53
--- /dev/null
+++ b/utils/env/parsers.go
@@ -0,0 +1,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
+}