This is an automated email from the ASF dual-hosted git repository.

alexstocks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git

commit 794ab77916f1cc60fb5ab6a988ae4c4bfa1b2eaa
Merge: 374a01a cc7fb2e
Author: Xin.Zh <[email protected]>
AuthorDate: Sun Jan 10 17:07:31 2021 +0800

    Merge pull request #932 from cityiron/feature/fix-config_center-file
    
    [Fix] file service discovery path can run in windows

 config_center/file/impl.go         | 110 +++++++++++++++++++++++++++----------
 go.sum                             |   2 -
 registry/file/service_discovery.go |   2 +-
 3 files changed, 81 insertions(+), 33 deletions(-)

diff --cc config_center/file/impl.go
index 9afe7c6,0233f63..6489a07
--- a/config_center/file/impl.go
+++ b/config_center/file/impl.go
@@@ -41,13 -40,29 +40,21 @@@ import 
        "github.com/apache/dubbo-go/config_center/parser"
  )
  
 -var osType string
 -var path string
++var (
++      osType = runtime.GOOS
++)
+ 
+ const (
 -      windows = "windows"
++      windowsOS = "windows"
+ )
+ 
  const (
-       PARAM_NAME_PREFIX                 = "dubbo.config-center."
-       CONFIG_CENTER_DIR_PARAM_NAME      = PARAM_NAME_PREFIX + "dir"
-       CONFIG_CENTER_ENCODING_PARAM_NAME = PARAM_NAME_PREFIX + "encoding"
-       DEFAULT_CONFIG_CENTER_ENCODING    = "UTF-8"
+       ParamNamePrefix               = "dubbo.config-center."
+       ConfigCenterDirParamName      = ParamNamePrefix + "dir"
+       ConfigCenterEncodingParamName = ParamNamePrefix + "encoding"
+       defaultConfigCenterEncoding   = "UTF-8"
  )
  
 -func init() {
 -      osType = runtime.GOOS
 -      if os.IsPathSeparator('\\') {
 -              path = "\\"
 -      } else {
 -              path = "/"
 -      }
 -}
 -
  // FileSystemDynamicConfiguration
  type FileSystemDynamicConfiguration struct {
        config_center.BaseDynamicConfiguration
@@@ -206,7 -211,7 +203,7 @@@ func (fsdc *FileSystemDynamicConfigurat
  }
  
  func (fsdc *FileSystemDynamicConfiguration) deleteDelay(path string) (bool, 
error) {
--      if path == "" {
++      if len(path) == 0 {
                return false, nil
        }
  
@@@ -226,9 -231,9 +223,7 @@@ func (fsdc *FileSystemDynamicConfigurat
  }
  
  func forceMkdirParent(fp string) error {
--      pd := getParentDirectory(fp)
--
--      return createDir(pd)
++      return createDir(getParentDirectory(fp))
  }
  
  func createDir(path string) error {
@@@ -250,6 -255,6 +245,7 @@@ func substr(s string, pos, length int) 
        if l > len(runes) {
                l = len(runes)
        }
++
        return string(runes[pos:l])
  }
  
@@@ -264,7 -269,7 +260,7 @@@ func Home() (string, error) 
        }
  
        // cross compile support
--      if "windows" == runtime.GOOS {
++      if windowsOS == osType {
                return homeWindows()
        }
  
@@@ -287,7 -292,7 +283,7 @@@ func homeUnix() (string, error) 
        }
  
        result := strings.TrimSpace(stdout.String())
--      if result == "" {
++      if len(result) == 0 {
                return "", errors.New("blank output when reading home 
directory")
        }
  
@@@ -298,12 -303,66 +294,66 @@@ func homeWindows() (string, error) 
        drive := os.Getenv("HOMEDRIVE")
        homePath := os.Getenv("HOMEPATH")
        home := drive + homePath
--      if drive == "" || homePath == "" {
++      if len(drive) == 0 || len(homePath) == 0 {
                home = os.Getenv("USERPROFILE")
        }
--      if home == "" {
++      if len(home) == 0 {
                return "", errors.New("HOMEDRIVE, HOMEPATH, and USERPROFILE are 
blank")
        }
  
        return home, nil
  }
+ 
+ func mkdirIfNecessary(urlRoot string) (string, error) {
+       if !legalPath(urlRoot) {
+               // not exist, use default, mac is: /XXX/xx/.dubbo/config-center
+               rp, err := Home()
+               if err != nil {
+                       return "", perrors.WithStack(err)
+               }
+ 
+               urlRoot = adapterUrl(rp)
+       }
+ 
+       if _, err := os.Stat(urlRoot); err != nil {
+               // it must be dir, if not exist, will create
+               if err = createDir(urlRoot); err != nil {
+                       return "", perrors.WithStack(err)
+               }
+       }
+ 
+       return urlRoot, nil
+ }
+ 
+ func legalPath(path string) bool {
+       if len(path) == 0 {
+               return false
+       }
+       if _, err := os.Stat(path); err != nil {
+               return false
+       }
+ 
+       return true
+ }
+ 
+ func adapterUrl(rp string) string {
 -      if osType == windows {
++      if osType == windowsOS {
+               return filepath.Join(rp, "_dubbo", "config-center")
+       }
+ 
+       return filepath.Join(rp, ".dubbo", "config-center")
+ }
+ 
+ // used for GetPath. param key default is instance's id.
+ // e.g: (ip:port) 127.0.0.1:20081, in windows env, will change to 
127_0_0_1_20081
+ func adapterKey(key string) string {
+       if len(key) == 0 {
+               return ""
+       }
+ 
 -      if osType == windows {
++      if osType == windowsOS {
+               return strings.ReplaceAll(strings.ReplaceAll(key, ".", "_"), 
":", "_")
+       }
+ 
+       return key
+ }
diff --cc go.sum
index bc0b1ec,201f03e..78bccb6
--- a/go.sum
+++ b/go.sum
@@@ -62,7 -79,7 +62,6 @@@ github.com/RoaringBitmap/roaring v0.5.
  github.com/RoaringBitmap/roaring v0.5.5/go.mod 
h1:puNo5VdzwbaIQxSiDIwfXl4Hnc+fbovcX4IW/dSTtUk=
  github.com/Shopify/sarama v1.19.0/go.mod 
h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
  github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod 
h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
--github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 
h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8=
  github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod 
h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
  github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d 
h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk=
  github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod 
h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
@@@ -234,7 -314,7 +233,6 @@@ github.com/go-logfmt/logfmt v0.3.0/go.m
  github.com/go-logfmt/logfmt v0.4.0/go.mod 
h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
  github.com/go-logfmt/logfmt v0.5.0/go.mod 
h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
  github.com/go-logr/logr v0.1.0/go.mod 
h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
--github.com/go-ole/go-ole v1.2.1 
h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E=
  github.com/go-ole/go-ole v1.2.1/go.mod 
h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
  github.com/go-ole/go-ole v1.2.4 
h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=
  github.com/go-ole/go-ole v1.2.4/go.mod 
h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=

Reply via email to