|
@@ -2,6 +2,8 @@ package config
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
+ "gopkg.in/yaml.v3"
|
|
|
+ "os"
|
|
|
"reflect"
|
|
|
)
|
|
|
|
|
@@ -37,3 +39,25 @@ func Invalidate(config IConfig) error {
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+func ReadConfig[T IConfig](path string) (*T, error) {
|
|
|
+ var (
|
|
|
+ cfg = new(T)
|
|
|
+ fd []byte
|
|
|
+ err error
|
|
|
+ )
|
|
|
+
|
|
|
+ if fd, err = os.ReadFile(path); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ if err = yaml.Unmarshal(fd, cfg); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ if err = Invalidate(*cfg); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ return cfg, nil
|
|
|
+}
|