perf(constant): prioritize CWD parent check in ResolveAppRootDir
This commit is contained in:
@@ -34,7 +34,25 @@ func init() {
|
|||||||
|
|
||||||
// ResolveAppRootDir 获取应用程序的绝对根目录路径。
|
// ResolveAppRootDir 获取应用程序的绝对根目录路径。
|
||||||
func ResolveAppRootDir() string {
|
func ResolveAppRootDir() string {
|
||||||
// 1. 检查当前可执行文件路径
|
// 1. 检查当前工作目录(CWD)及其上级目录
|
||||||
|
if cwd, err := os.Getwd(); err == nil {
|
||||||
|
dir := cwd
|
||||||
|
for {
|
||||||
|
if _, err := os.Stat(filepath.Join(dir, "configs", "config.ini")); err == nil {
|
||||||
|
return dir
|
||||||
|
}
|
||||||
|
if _, err := os.Stat(filepath.Join(dir, "go.mod")); err == nil {
|
||||||
|
return dir
|
||||||
|
}
|
||||||
|
parent := filepath.Dir(dir)
|
||||||
|
if parent == dir {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
dir = parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 检查当前可执行文件路径及其上级目录
|
||||||
if exe, err := os.Executable(); err == nil {
|
if exe, err := os.Executable(); err == nil {
|
||||||
dir := filepath.Dir(exe)
|
dir := filepath.Dir(exe)
|
||||||
for {
|
for {
|
||||||
@@ -51,7 +69,8 @@ func ResolveAppRootDir() string {
|
|||||||
dir = parent
|
dir = parent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 2. 回退到当前工作目录
|
|
||||||
|
// 3. 兜底回退到当前工作目录
|
||||||
if cwd, err := os.Getwd(); err == nil {
|
if cwd, err := os.Getwd(); err == nil {
|
||||||
return cwd
|
return cwd
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user