summaryrefslogtreecommitdiff
path: root/nexus/utils/env/extract.go
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-03-29 22:52:46 +0530
committerBobby <[email protected]>2026-03-29 22:52:46 +0530
commit9eb9b7f4bd552a641235764f66483e1f940fcfd9 (patch)
treeda520b923b5e6758d5457b6233dd6671fc640914 /nexus/utils/env/extract.go
parent65a143a0871c35989b7c7ea6723d39a0585c089e (diff)
downloadechoes-of-vaelun-main.tar.xz
echoes-of-vaelun-main.zip
feat: nexus account manager scaffold with auth, characters, realmsHEADmain
Diffstat (limited to 'nexus/utils/env/extract.go')
-rw-r--r--nexus/utils/env/extract.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/nexus/utils/env/extract.go b/nexus/utils/env/extract.go
new file mode 100644
index 0000000..72db69f
--- /dev/null
+++ b/nexus/utils/env/extract.go
@@ -0,0 +1,33 @@
+package env
+
+import (
+ "errors"
+ "reflect"
+)
+
+func extractConfig(config any) (reflect.Value, reflect.Type, error) {
+ v := reflect.ValueOf(config)
+ if v.Kind() != reflect.Pointer || v.Elem().Kind() != reflect.Struct {
+ return reflect.Value{}, nil, errors.New(ConfigMustBePointer)
+ }
+ elem := v.Elem()
+ return elem, elem.Type(), nil
+}
+
+func extractFieldEnvInfo(element reflect.Value, elementType reflect.Type, index int) (*reflect.Value, string, string, bool) {
+ field := element.Field(index)
+ fieldType := elementType.Field(index)
+
+ if !field.CanSet() {
+ return nil, "", "", false
+ }
+
+ envKey := fieldType.Tag.Get(keyEnv)
+ defaultVal := fieldType.Tag.Get(keyDefault)
+
+ if envKey == "" {
+ return nil, "", "", false
+ }
+
+ return &field, envKey, defaultVal, true
+}