| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package config
- import (
- "encoding/json"
- "fmt"
- "gopkg.in/yaml.v3"
- "io/ioutil"
- "os"
- "sync"
- )
- var (
- instance *config
- once sync.Once
- DevConfig Devs
- )
- // 初始化配置,确保只初始化一次
- func init() {
- once.Do(func() {
- loadConfig() // 加载配置文件
- })
- }
- // 重新加载配置文件
- func ReloadConfig() {
- loadConfig() // 加载配置文件
- }
- // 加载配置文件
- func loadConfig() {
- var conf config
- filePath := "./config/config.yaml"
- if f, err := os.Open(filePath); err != nil {
- panic(err)
- } else {
- err := yaml.NewDecoder(f).Decode(&conf)
- if err != nil {
- panic(err)
- }
- }
- instance = &conf
- }
- // 获取配置文档实例
- func Instance() *config {
- return instance
- }
- type config struct {
- ProjectName string `yaml:"projectName"`
- Logger logger `yaml:"logger"`
- Mqtt mqtt `yaml:"mqtt"`
- }
- type logger struct {
- Path string `yaml:"path"`
- Name string `yaml:"name"`
- Level string `yaml:"level"`
- }
- type mqtt struct {
- Server string `yaml:"server"`
- Id string `yaml:"id"`
- User string `yaml:"user"`
- Password string `yaml:"password"`
- }
- func LoadDevConfig() error {
- // 读取配置文件
- data, err := ioutil.ReadFile("./dev/devs.json")
- if err != nil {
- return fmt.Errorf("读取配置文件失败: %v", err)
- }
- // 解析 JSON 数据到结构体
- if err := json.Unmarshal(data, &DevConfig); err != nil {
- return fmt.Errorf("解析 JSON 配置失败: %v", err)
- }
- return nil
- }
- type Devs struct {
- Screens []*Screens `json:"ledScreens"`
- }
- type Screens struct {
- Sn string `json:"sn"`
- ScreensName string `json:"screensName"`
- }
|