// appdir — 独立二进制运行目录(数据/配置相对可执行文件,不依赖 cwd)// Logan.Li package appdir import ( "os" "path/filepath" ) // Root 可执行文件所在目录(解析软链)// Logan.Li func Root() string { exe, err := os.Executable() if err != nil { return "." } if resolved, err := filepath.EvalSymlinks(exe); err == nil { exe = resolved } return filepath.Dir(exe) } // Resolve 相对路径 → 基于可执行文件目录的绝对路径 // Logan.Li func Resolve(path string) string { if path == "" || filepath.IsAbs(path) { return path } return filepath.Join(Root(), path) } // EnsureParentDir 确保文件父目录存在 // Logan.Li func EnsureParentDir(filePath string) error { dir := filepath.Dir(filePath) if dir == "" || dir == "." { return nil } return os.MkdirAll(dir, 0o755) }