From 9fc37cf8ae07db747c5c7745b01b33085761ba0b Mon Sep 17 00:00:00 2001 From: Lvbo163 Date: Tue, 31 Jul 2018 15:58:40 +0800 Subject: [PATCH] method for project's config path method of get configuration path Issue-ID: MSB-239 Change-Id: I256603c9eed40dafe6ecb7d17b57ab1f586d0f11 Signed-off-by: Lvbo163 --- msb2pilot/src/msb2pilot/util/common.go | 75 ++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 msb2pilot/src/msb2pilot/util/common.go 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 +} -- 2.16.6