From f25d92c4e64f4439814e83f2defaf055d318e774 Mon Sep 17 00:00:00 2001 From: Stu Leak Date: Sun, 4 Jan 2026 19:16:42 -0500 Subject: [PATCH] Fix Windows log folder opening --- main.go | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/main.go b/main.go index a240da2..045aca9 100644 --- a/main.go +++ b/main.go @@ -474,18 +474,31 @@ func openFolder(path string) error { if strings.TrimSpace(path) == "" { return fmt.Errorf("path is empty") } + p := filepath.Clean(filepath.FromSlash(path)) + if abs, err := filepath.Abs(p); err == nil { + p = abs + } + info, err := os.Stat(p) + if err != nil { + if os.IsNotExist(err) { + if mkErr := os.MkdirAll(p, 0o755); mkErr != nil { + return fmt.Errorf("failed to create folder: %w", mkErr) + } + } else { + return err + } + } else if !info.IsDir() { + p = filepath.Dir(p) + } + var cmd *exec.Cmd switch runtime.GOOS { case "windows": - p := filepath.Clean(filepath.FromSlash(path)) - if abs, err := filepath.Abs(p); err == nil { - p = abs - } - cmd = utils.CreateCommandRaw("cmd", "/c", "start", "", p) + cmd = utils.CreateCommandRaw("explorer", p) case "darwin": - cmd = utils.CreateCommandRaw("open", path) + cmd = utils.CreateCommandRaw("open", p) default: - cmd = utils.CreateCommandRaw("xdg-open", path) + cmd = utils.CreateCommandRaw("xdg-open", p) } return cmd.Start() }