@cryptotaxi247 / netdata-1 / commits / 7739bf1fb

go.d fix netdata dir path on win under msys (#18221)

Ilya Mashchenko committed Jul 24, 2024 at 14:15 UTC 7739bf1fb746ad25f43edea2c10aae2bc5e041a9
1 file changed +33 -2
src/go/cmd/godplugin/main.go
+33 -2
@@ -26,6 +26,8 @@ import (
26 )
27
28 var (
29 + cygwinBasePath = os.Getenv("NETDATA_CYGWIN_BASE_PATH")
30 +
31 name = "go.d"
32 userDir = os.Getenv("NETDATA_USER_CONFIG_DIR")
33 stockDir = os.Getenv("NETDATA_STOCK_CONFIG_DIR")
@@ -35,6 +37,14 @@ var (
37 envLogLevel = os.Getenv("NETDATA_LOG_LEVEL")
38 )
39
40 +func init() {
41 + userDir = handleDirOnWin(userDir)
42 + stockDir = handleDirOnWin(stockDir)
43 + varLibDir = handleDirOnWin(varLibDir)
44 + lockDir = handleDirOnWin(lockDir)
45 + watchPath = handleDirOnWin(watchPath)
46 +}
47 +
48 func confDir(opts *cli.Option) multipath.MultiPath {
49 if len(opts.ConfDir) > 0 {
50 return opts.ConfDir
@@ -48,7 +58,10 @@ func confDir(opts *cli.Option) multipath.MultiPath {
58
59 dirs = append(dirs, filepath.Join(executable.Directory, "/../../../../etc/netdata"))
60
51 - for _, dir := range []string{"/etc/netdata", "/opt/netdata/etc/netdata"} {
61 + for _, dir := range []string{
62 + handleDirOnWin("/etc/netdata"),
63 + handleDirOnWin("/opt/netdata/etc/netdata"),
64 + } {
65 if isDirExists(dir) {
66 dirs = append(dirs, dir)
67 break
@@ -57,7 +70,10 @@ func confDir(opts *cli.Option) multipath.MultiPath {
70
71 dirs = append(dirs, filepath.Join(executable.Directory, "/../../../../usr/lib/netdata/conf.d"))
72
60 - for _, dir := range []string{"/usr/lib/netdata/conf.d", "/opt/netdata/usr/lib/netdata/conf.d"} {
73 + for _, dir := range []string{
74 + handleDirOnWin("/usr/lib/netdata/conf.d"),
75 + handleDirOnWin("/opt/netdata/usr/lib/netdata/conf.d"),
76 + } {
77 if isDirExists(dir) {
78 dirs = append(dirs, dir)
79 break
@@ -170,3 +186,18 @@ func isDirExists(dir string) bool {
186 }
187 return !errors.Is(err, fs.ErrNotExist)
188 }
189 +
190 +func handleDirOnWin(path string) string {
191 + base := cygwinBasePath
192 +
193 + // TODO: temp workaround for debug mode
194 + if base == "" && strings.HasPrefix(executable.Directory, "C:\\msys64") {
195 + base = "C:\\msys64"
196 + }
197 +
198 + if base == "" || !strings.HasPrefix(path, "/") {
199 + return path
200 + }
201 +
202 + return filepath.Join(base, path)
203 +}