31 lines
483 B
Go
31 lines
483 B
Go
package cfgload
|
|
|
|
import (
|
|
"encoding/json"
|
|
"encoding/xml"
|
|
"os"
|
|
"path"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
// FromFile loads configuration from file
|
|
func FromFile(filepath string, cfg any) (err error) {
|
|
var (
|
|
buf []byte
|
|
)
|
|
if buf, err = os.ReadFile(filepath); err != nil {
|
|
return
|
|
}
|
|
ext := path.Ext(filepath)
|
|
switch ext {
|
|
case ".json":
|
|
err = json.Unmarshal(buf, cfg)
|
|
case ".xml":
|
|
err = xml.Unmarshal(buf, cfg)
|
|
case ".yaml", ".yml":
|
|
err = yaml.Unmarshal(buf, cfg)
|
|
}
|
|
return
|
|
}
|