完善
This commit is contained in:
parent
7431823ac7
commit
a08b9538ae
@ -2,6 +2,7 @@ package config
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/fthvgb1/wp-go/safety"
|
"github.com/fthvgb1/wp-go/safety"
|
||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
@ -109,24 +110,17 @@ func InitConfig(conf string) error {
|
|||||||
case ".yaml":
|
case ".yaml":
|
||||||
err = yaml.Unmarshal(file, &c)
|
err = yaml.Unmarshal(file, &c)
|
||||||
case ".json":
|
case ".json":
|
||||||
var v map[string]any
|
err = jsonToYaml(file, &c)
|
||||||
err = json.Unmarshal(file, &v)
|
|
||||||
if err == nil {
|
|
||||||
marshal, er := yaml.Marshal(v)
|
|
||||||
if er != nil {
|
|
||||||
return er
|
|
||||||
}
|
|
||||||
err = yaml.Unmarshal(marshal, &c)
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
err = yaml.Unmarshal(file, &c)
|
err = yaml.Unmarshal(file, &c)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
err = json.Unmarshal(file, &c)
|
err = jsonToYaml(file, &c)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
return errors.Join(errors.New("can't parse the config"), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -136,6 +130,20 @@ func InitConfig(conf string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func jsonToYaml[T any](b []byte, c T) error {
|
||||||
|
var v map[string]any
|
||||||
|
err := json.Unmarshal(b, &v)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
marshal, er := yaml.Marshal(v)
|
||||||
|
if er != nil {
|
||||||
|
return er
|
||||||
|
}
|
||||||
|
err = yaml.Unmarshal(marshal, c)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
type Dsn struct {
|
type Dsn struct {
|
||||||
Host string `yaml:"host" json:"host,omitempty"`
|
Host string `yaml:"host" json:"host,omitempty"`
|
||||||
Port json.Number `yaml:"port" json:"port,omitempty"`
|
Port json.Number `yaml:"port" json:"port,omitempty"`
|
||||||
|
Loading…
Reference in New Issue
Block a user