diff --git a/infra/config/config.go b/infra/config/config.go index 0ef7f25..f3e1ba0 100644 --- a/infra/config/config.go +++ b/infra/config/config.go @@ -1,9 +1,9 @@ package config import ( + "LAPP_ETL/utils" "github.com/spf13/viper" "path" - "path/filepath" ) var AppConfig Config @@ -48,7 +48,7 @@ type ETCD struct { } func InitConfig() (err error) { - baseDir, err := filepath.Abs(".") + baseDir, err := utils.GetCurrentPath("/conf") if err != nil { return } diff --git a/utils/util.go b/utils/util.go index 2980bfe..461a9af 100644 --- a/utils/util.go +++ b/utils/util.go @@ -1,11 +1,14 @@ package utils import ( + "errors" "fmt" "io" "log" "mime/multipart" "os" + "os/exec" + "path/filepath" "reflect" "strconv" "strings" @@ -207,4 +210,29 @@ func ConvInt2FormatString(input, ilen int)(retstring string){ retstring = strings.Repeat("0", igap) + strconv.Itoa(input) } return +} + +//windows环境下获取绝对路径 +func GetCurrentPath(dir string) (string, error) { + file, err := exec.LookPath(os.Args[0]) + if err != nil { + return "", err + } + path, err := filepath.Abs(file) + if err != nil { + return "", err + } + i := strings.LastIndex(path, "/") + if i < 0 { + i = strings.LastIndex(path, "\\") + } + if i < 0 { + return "", errors.New(`error: Can't find "/" or "\".`) + } + pathdir := string(path[0 : i+1]) + if len(dir) > 0 { + dir = strings.Replace(dir, "/", "\\", -1) + return filepath.Join(pathdir, dir), nil + } + return string(path[0 : i+1]), nil } \ No newline at end of file