gitee.com/curryzheng/dm@v0.0.1/util/zzs.go (about) 1 /* 2 * Copyright (c) 2000-2018, 达梦数据库有限公司. 3 * All rights reserved. 4 */ 5 6 package util 7 8 import ( 9 "go/build" 10 "os" 11 "runtime" 12 "strings" 13 ) 14 15 const ( 16 PathSeparator = string(os.PathSeparator) 17 PathListSeparator = string(os.PathListSeparator) 18 ) 19 20 var ( 21 goRoot = build.Default.GOROOT 22 goPath = build.Default.GOPATH //获取实际编译时的GOPATH值 23 ) 24 25 type fileUtil struct { 26 } 27 28 var FileUtil = &fileUtil{} 29 30 func (fileUtil *fileUtil) Exists(path string) bool { 31 if _, err := os.Stat(path); !os.IsNotExist(err) { 32 return true 33 } 34 return false 35 } 36 37 func (fileUtil *fileUtil) Search(relativePath string) (path string) { 38 if strings.Contains(runtime.GOOS, "windows") { 39 relativePath = strings.ReplaceAll(relativePath, "/", "\\") 40 } 41 42 if fileUtil.Exists(goPath) { 43 for _, s := range strings.Split(goPath, PathListSeparator) { 44 path = s + PathSeparator + "src" + PathSeparator + relativePath 45 if fileUtil.Exists(path) { 46 return path 47 } 48 } 49 } 50 51 if fileUtil.Exists(goPath) { 52 for _, s := range strings.Split(goPath, PathListSeparator) { 53 path = s + PathSeparator + "pkg" + PathSeparator + relativePath 54 if fileUtil.Exists(path) { 55 return path 56 } 57 } 58 } 59 60 //if workDir, _ := os.Getwd(); fileUtil.Exists(workDir) { 61 // path = workDir + PathSeparator + "src" + PathSeparator + relativePath 62 // if fileUtil.Exists(path) { 63 // return path 64 // } 65 //} 66 67 //if fileUtil.Exists(goRoot) { 68 // path = goRoot + PathSeparator + "src" + PathSeparator + relativePath 69 // if fileUtil.Exists(path) { 70 // return path 71 // } 72 //} 73 74 return "" 75 }