60 lines
1.2 KiB
Go
60 lines
1.2 KiB
Go
package parse
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path"
|
|
"strings"
|
|
|
|
"Crimson-Gatekeeper/internal/utils"
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
type Cfg struct {
|
|
server struct {
|
|
port string
|
|
database struct {
|
|
host string
|
|
user string
|
|
dbname string
|
|
sslmode string
|
|
port string
|
|
passwd string
|
|
connectTimeout int
|
|
sshPoint string
|
|
}
|
|
sshPoint map[string]struct {
|
|
host string
|
|
port string
|
|
user string
|
|
passwd string
|
|
keyPath string
|
|
}
|
|
}
|
|
}
|
|
|
|
func GetCfg() *Cfg {
|
|
pwd, err := os.Getwd()
|
|
utils.PaincEro(err, "获取当前工作目录失败")
|
|
dirs, err := os.ReadDir(pwd)
|
|
utils.PaincEro(err, "获取目录文件失败")
|
|
var data []byte
|
|
for _, item := range dirs {
|
|
isyaml := strings.HasSuffix(item.Name(), ".yaml")
|
|
if isyaml {
|
|
filePath := path.Join(pwd, item.Name())
|
|
data, err = os.ReadFile(filePath)
|
|
utils.PaincEro(err, "读取配置文件失败")
|
|
break
|
|
}
|
|
}
|
|
if data == nil {
|
|
fmt.Println("没有找到配置文件,启动失败")
|
|
panic("没有找到配置文件,进程终止")
|
|
}
|
|
cfg := &Cfg{}
|
|
err = yaml.Unmarshal(data, cfg)
|
|
utils.PaincEro(err, "解析配置文件失败")
|
|
return cfg
|
|
}
|