diff options
author | Lvbo163 <lv.bo163@zte.com.cn> | 2018-07-31 15:58:40 +0800 |
---|---|---|
committer | Lvbo163 <lv.bo163@zte.com.cn> | 2018-07-31 16:00:44 +0800 |
commit | 9fc37cf8ae07db747c5c7745b01b33085761ba0b (patch) | |
tree | b5e048c68e2c06b017c0ed315a309f4696b818d8 /msb2pilot/src | |
parent | dba75a52f7b929683446c549fd7843624fd1e080 (diff) |
method for project's config path
method of get configuration path
Issue-ID: MSB-239
Change-Id: I256603c9eed40dafe6ecb7d17b57ab1f586d0f11
Signed-off-by: Lvbo163 <lv.bo163@zte.com.cn>
Diffstat (limited to 'msb2pilot/src')
-rw-r--r-- | msb2pilot/src/msb2pilot/util/common.go | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/msb2pilot/src/msb2pilot/util/common.go b/msb2pilot/src/msb2pilot/util/common.go new file mode 100644 index 0000000..6053116 --- /dev/null +++ b/msb2pilot/src/msb2pilot/util/common.go @@ -0,0 +1,75 @@ +/** + * Copyright (c) 2018 ZTE Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * ZTE - initial Project + */ +package util + +import ( + "os" + "path/filepath" + "strings" +) + +const ( + ConfigPath = "conf" +) + +func GetCfgPath() string { + appPath, err := filepath.Abs(filepath.Dir(os.Args[0])) + if err != nil { + panic(err) + } + + workPath, err := os.Getwd() + if err != nil { + panic(err) + } + + result := filepath.Join(workPath, ConfigPath) + + if !FileExists(result) { + result = filepath.Join(appPath, ConfigPath) + if !FileExists(result) { + goPaths := GetGoPath() + for _, path := range goPaths { + result = filepath.Join(path, "src", "msb2pilot", ConfigPath) + if FileExists(result) { + return result + } + } + result = "/" + } + } + + return result + +} + +func GetGoPath() []string { + paths := os.Getenv("GOPATH") + if strings.Contains(paths, ";") { // windows + return strings.Split(paths, ";") + } else if strings.Contains(paths, ":") { // linux + return strings.Split(paths, ":") + } else { // only one + path := make([]string, 1, 1) + path[0] = paths + return path + } +} + +func FileExists(path string) bool { + if _, err := os.Stat(path); err != nil { + if os.IsNotExist(err) { + return false + } + } + return true +} |