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  }