统一定义基准目录

pull/77/head
CN\liby71 4 years ago
parent d626d6b42f
commit 92d17ab448

@ -0,0 +1,51 @@
/**
*/
package base
import (
"errors"
"path/filepath"
"runtime"
)
// 获取项目基准目录
func baseDir(p string) (string, error) {
_, file, _, ok := runtime.Caller(0)
if !ok {
return "", errors.New("runtime.Caller error.")
}
dir:= filepath.Dir( filepath.Dir( filepath.Dir( file ) ) )
return dir+ p, nil
}
// 获取项目根目录
func ProjectDir(p string) string {
if p=="" {
p= "/"
}
dir, err:= baseDir(p)
if err!= nil {
panic(err)
}
return dir
}
// 获取各个常用目录
func ConfigDir() string {
return ProjectDir("/config/")
}
func ScriptDir() string {
return ProjectDir("/script/")
}
func BinDir() string {
return ProjectDir("/bin/")
}
func LogDir() string {
return ProjectDir("/logs/")
}
func PkgDir() string {
return ProjectDir("/pkg/")
}
func InternalDir() string {
return ProjectDir("/internal/")
}

@ -1,21 +1,20 @@
package config
import (
"Open_IM/pkg/base"
"io/ioutil"
"gopkg.in/yaml.v3"
"path/filepath"
"runtime"
//"path/filepath"
//"runtime"
)
var Config config
var (
_, b, _, _ = runtime.Caller(0)
// Root folder of this project
Root = filepath.Join(filepath.Dir(b), "../../..")
)
//var (
// _, b, _, _ = runtime.Caller(0)
// // Root folder of this project
// Root = filepath.Join(filepath.Dir(b), "../../..")
//)
type config struct {
ServerIP string `yaml:"serverip"`
@ -162,9 +161,16 @@ type config struct {
}
func init() {
confDir:= base.ConfigDir()
logDir:= base.LogDir()
// fix log dir
Config.Log.StorageLocation= logDir
// if we cd Open-IM-Server/src/utils and run go test
// it will panic cannot find config/config.yaml
bytes, err := ioutil.ReadFile(Root + "/config/config.yaml")
bytes, err := ioutil.ReadFile(confDir + "config.yaml")
//bytes, err := ioutil.ReadFile(Root + "/config/config.yaml")
if err != nil {
panic(err)
}

Loading…
Cancel
Save