interview-one-stop-server/config/config.go

89 lines
1.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package config
import (
"fmt"
"interview-one-stop-server/constant"
"io"
"os"
"os/exec"
"github.com/spf13/viper"
)
var GlobalConf Config
func InitConfig() error {
v := viper.New()
v.AddConfigPath("./conf") // 设置读取的文件路径
v.AddConfigPath("../../conf") // 设置读取的文件路径
v.SetConfigType("yaml") // 设置文件的类型
env := os.Getenv("ENV_NAME")
switch env {
case constant.EnvNameTencentProd:
v.SetConfigName("conf_prod")
default:
v.SetConfigName("conf_dev")
}
// 尝试进行配置读取
if err := v.ReadInConfig(); err != nil {
return err
}
err := v.Unmarshal(&GlobalConf)
if err != nil {
return err
}
go modifyDefaultSwaggerHost()
return nil
}
func modifyDefaultSwaggerHost() {
defer func() {
if r := recover(); r != nil {
fmt.Printf("linux cmd run failed,err is %v\n", r)
}
}()
path := "/app/swagger/dist/"
host := GlobalConf.Service.Domain[7:]
ph := ""
env := os.Getenv("ENV_NAME")
if env == "" {
host = "localhost:4004"
pwd, _ := os.Getwd()
path = pwd + "/swagger/dist/"
ph = "''"
}
cmd := exec.Command("/bin/bash", "-c", fmt.Sprintf(`cp %s %s && sed -i %s ' s/UNKNOWNHOSTHHH/%s/g' %s `,
path+"swagger-initializer.js.bak", path+"swagger-initializer.js", ph, host, path+"swagger-initializer.js"))
output, err := cmd.StdoutPipe()
if err != nil {
fmt.Println("无法获取命令的标准输出管道", err.Error())
return
}
if err := cmd.Start(); err != nil {
fmt.Println("Linux命令执行失败请检查命令输入是否有误", err.Error())
return
}
// 读取所有输出
bytes, err := io.ReadAll(output)
if err != nil {
fmt.Println("打印异常,请检查")
return
}
if err := cmd.Wait(); err != nil {
fmt.Println("Wait", err.Error())
return
}
fmt.Printf("打印内存信息:\n\n%s", bytes)
}