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
+}