From fa2c5c93e10df07b47abbbc4a81153de6e4e4001 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sun, 5 Apr 2026 16:03:48 +0900 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E4=B8=80=E4=B8=8B=20`once(ex?= =?UTF-8?q?pr)`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/scriptcat/utils.go | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/pkg/scriptcat/utils.go b/pkg/scriptcat/utils.go index 1f31f0c..5c2a362 100644 --- a/pkg/scriptcat/utils.go +++ b/pkg/scriptcat/utils.go @@ -36,11 +36,24 @@ func ConvCron(cron string) (string, error) { } for i, v := range unit { if v == "once" { + // once -> * unit[i] = "*" - i -= 1 - for ; i >= 0; i-- { - if unit[i] == "*" { - unit[i] = "0" + for j := i - 1; j >= 0; j-- { + if unit[j] == "*" { + unit[j] = "0" + } + } + break + } else if strings.HasPrefix(v, "once(") && strings.HasSuffix(v, ")") { + // once(expr) -> expr + expr := v[len("once(") : len(v)-1] + if expr == "" { + return "", errors.New("once() expression cannot be empty: " + v) + } + unit[i] = expr + for j := i - 1; j >= 0; j-- { + if unit[j] == "*" { + unit[j] = "0" } } break