89 lines
1.8 KiB
Go
89 lines
1.8 KiB
Go
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)
|
||
}
|