From 2ae44a466eccd92f49bad42e065d3223c9b3eba0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=28=D0=A5?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D1=8B=D1=87=D0=AA=29=20=D0=A5=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=BE=D0=B2?= Date: Fri, 15 Aug 2025 22:50:34 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=84=D0=BB=D0=B0=D0=B3=20--now=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BD=D0=B5=D0=BC=D0=B5=D0=B4=D0=BB=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлен флаг --now (-n) для запуска всех зарегистрированных проверок сразу при старте - Программа завершается после выполнения всех проверок при использовании --now - Исправлена ошибка в плагине binary-packages с store.get() - Исправлена ошибка с атрибутом .text в плагине binary-packages - Использован sync.WaitGroup для корректного ожидания завершения всех проверок --- main.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 72151b1..4b23d12 100644 --- a/main.go +++ b/main.go @@ -24,7 +24,7 @@ import ( "os" "path/filepath" "strings" - "time" + "sync" "github.com/caarlos0/env/v8" "github.com/go-git/go-git/v5" @@ -156,14 +156,17 @@ func main() { if len(registeredFns) > 0 { log.Info("Running all registered plugin checks immediately").Int("functions", len(registeredFns)).Send() + var wg sync.WaitGroup for key, fn := range registeredFns { parts := strings.Split(key, ":") pluginName := parts[0] log.Info("Executing registered function").Str("plugin", pluginName).Str("function", fn.Name()).Send() + wg.Add(1) // Запускаем функцию в горутине для параллельного выполнения go func(function *starlark.Function, plugin string) { + defer wg.Done() thread := &starlark.Thread{Name: plugin} _, err := starlark.Call(thread, function, nil, nil) if err != nil { @@ -174,11 +177,14 @@ func main() { }(fn, pluginName) } - // Даём время на выполнение функций + // Ждём завершения всех функций log.Info("Waiting for immediate checks to complete...").Send() - time.Sleep(5 * time.Second) + wg.Wait() + log.Info("All checks completed, exiting").Send() + return // Выходим после выполнения всех проверок } else { log.Warn("No functions registered with run_every, nothing to run immediately").Send() + return } }