From c953c1629d3498c6cb8e0e46e89385ce4c811765 Mon Sep 17 00:00:00 2001 From: danieldd <113032234+Danieldd28@users.noreply.github.com> Date: Mon, 16 Feb 2026 20:35:18 +0700 Subject: [PATCH] Update pkg/tools/browser.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- pkg/tools/browser.go | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/pkg/tools/browser.go b/pkg/tools/browser.go index f9e4977a1..e7723bee2 100644 --- a/pkg/tools/browser.go +++ b/pkg/tools/browser.go @@ -11,22 +11,31 @@ import ( "fmt" "os/exec" "strings" + "sync" "time" ) // actionbookBinary caches the resolved path to the actionbook CLI. -var actionbookBinary string +var ( + actionbookBinary string + actionbookOnce sync.Once + actionbookErr error +) func resolveActionbook() (string, error) { - if actionbookBinary != "" { - return actionbookBinary, nil + actionbookOnce.Do(func() { + var path string + path, actionbookErr = exec.LookPath("actionbook") + if actionbookErr != nil { + actionbookErr = fmt.Errorf("actionbook CLI not found in PATH: %w", actionbookErr) + return + } + actionbookBinary = path + }) + if actionbookErr != nil { + return "", actionbookErr } - path, err := exec.LookPath("actionbook") - if err != nil { - return "", fmt.Errorf("actionbook CLI not found in PATH: %w", err) - } - actionbookBinary = path - return path, nil + return actionbookBinary, nil } // runActionbook executes an actionbook CLI command with a timeout.