method for project's config path 87/58187/1
authorLvbo163 <lv.bo163@zte.com.cn>
Tue, 31 Jul 2018 07:58:40 +0000 (15:58 +0800)
committerLvbo163 <lv.bo163@zte.com.cn>
Tue, 31 Jul 2018 08:00:44 +0000 (16:00 +0800)
method of get configuration path

Issue-ID: MSB-239

Change-Id: I256603c9eed40dafe6ecb7d17b57ab1f586d0f11
Signed-off-by: Lvbo163 <lv.bo163@zte.com.cn>
msb2pilot/src/msb2pilot/util/common.go [new file with mode: 0644]

diff --git a/msb2pilot/src/msb2pilot/util/common.go b/msb2pilot/src/msb2pilot/util/common.go
new file mode 100644 (file)
index 0000000..6053116
--- /dev/null
@@ -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
+}