Files
core/conf/new.go
yanweidong 25386cf0e1 ```
refactor(print): 将 print 包重命名为 printer 并更新所有引用

将项目中的 print 包统一重命名为 printer,以避免与标准库或第三方库产生命名冲突。同时,
更新了所有相关模块对该包的引用,确保功能一致性和代码可维护性。

涉及文件包括:
- conf/new.go
- infra/service.go
- service/register.go
- service/service.go
- with/databases.go
- with/etcd.go
- with/memory.go
- with/redis.go

此外,删除了以下已废弃或未使用的代码文件:
- cmd/cmd.go
- data/map_float.go
- data/map_string.go
- oplog/new.go
- oplog/types.go
- print/print.go
- utils/ext.go
```
2025-09-27 00:20:36 +08:00

92 lines
2.1 KiB
Go

package conf
import (
"fmt"
"log"
"os"
"path/filepath"
"strings"
"time"
"math/rand/v2"
"git.apinb.com/bsm-sdk/core/env"
"git.apinb.com/bsm-sdk/core/printer"
"git.apinb.com/bsm-sdk/core/utils"
"git.apinb.com/bsm-sdk/core/vars"
yaml "gopkg.in/yaml.v3"
)
func New(srvKey string, cfg any) {
env.NewEnv()
// 设置服务键
vars.ServiceKey = srvKey
// 获取主机名
vars.HostName, _ = os.Hostname()
// 构造配置文件路径,输出配置文件信息
cfp := fmt.Sprintf("%s_%s.yaml", strings.ToLower(srvKey), env.Runtime.Mode)
cfp = filepath.Join(env.Runtime.Prefix, "etc", cfp)
// 配置文件不存在则读取Workspace配置文件
if !utils.PathExists(cfp) {
cfp = fmt.Sprintf("workspace_%s_%s.yaml", strings.ToLower(env.Runtime.Workspace), env.Runtime.Mode)
cfp = filepath.Join(env.Runtime.Prefix, "etc", cfp)
}
printer.Info("[BSM - %s] Config File: %s", srvKey, cfp)
printer.Info("[BSM - %s] Check Configure ...", vars.ServiceKey)
// 读取配置文件内容
yamlFile, err := os.ReadFile(cfp)
if err != nil {
log.Fatalf("ERROR: %v", err)
}
// 替换环境变量
yamlString := os.ExpandEnv(string(yamlFile))
// 检查配置文件中是否存在Service和Port字段
if !strings.Contains(yamlString, "Service:") {
log.Fatalln("ERROR: Service Not Nil", cfp)
}
// 解析YAML
err = yaml.Unmarshal([]byte(yamlString), cfg)
if err != nil {
log.Fatalf("ERROR: %v", err)
}
}
func NotNil(values ...string) {
for _, value := range values {
if strings.TrimSpace(value) == "" {
log.Fatalln("ERROR:Must config key not nil")
}
}
}
func PrintInfo(addr string) {
printer.Success("[BSM - %s] Config Check Success.", vars.ServiceKey)
printer.Info("[BSM - %s] Service Name: %s", vars.ServiceKey, vars.ServiceKey)
printer.Info("[BSM - %s] Runtime Mode: %s", vars.ServiceKey, env.Runtime.Mode)
}
func CheckPort(port string) string {
if port == "" {
r := rand.New(rand.NewPCG(1000, uint64(time.Now().UnixNano())))
p := r.IntN(65535-1024) + 1024 // 生成1024到65535之间的随机端口
return utils.Int2String(p)
}
return port
}
func CheckIP(ip string) string {
if ip == "" {
return utils.GetLocationIP()
}
return ip
}