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) }