From a6d3aa412f0c157f9550ba65849e308fa6676422 Mon Sep 17 00:00:00 2001 From: Daniel Miakotkin Date: Fri, 6 Jan 2023 16:28:07 -0800 Subject: [PATCH 1/3] Add cron expression length validation --- validator/validator.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/validator/validator.go b/validator/validator.go index d3ef2e1..4c1257b 100644 --- a/validator/validator.go +++ b/validator/validator.go @@ -46,6 +46,21 @@ func Cron(value interface{}, _ cty.Path) diag.Diagnostics { return diags } +func CronLength(value interface{}, _ cty.Path) diag.Diagnostics { + var diags diag.Diagnostics + cron := regexp.MustCompile("[^\\s]+").FindAllString(value.(string), -1) + + if len(cron) > 7 || len(cron) < 6 { + diags = append(diags, diag.Diagnostic{ + Severity: diag.Error, + Summary: "Invalid Cron expression, value should be between 6 and 7 characters long", + Detail: fmt.Sprintf("%s is not a valid cron", value), + }) + } + + return diags +} + var CommaSeperatedList = validation.ToDiagFunc( validation.StringMatch(regexp.MustCompile(`.+(?:,.+)*`), "must be comma separated string"), ) From 80b64901ab58609a858e43ea9bbd9184cf7ed2d7 Mon Sep 17 00:00:00 2001 From: Daniel Miakotkin Date: Fri, 6 Jan 2023 16:31:59 -0800 Subject: [PATCH 2/3] Add CHANGELOG.md --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 315687b..15acf94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.9.0 (January 6, 2023) + +NEW FEATURES: + +* added validation for the cron expression length to only allow 6-7 characters expressions. PR [#25](https://github.com/jfrog/terraform-provider-shared/pull/25) + ## 1.8.0 (December 21, 2022) BUG FIXES: From f7068e33b037911fd342e6971567053f1a611b04 Mon Sep 17 00:00:00 2001 From: Daniel Miakotkin Date: Fri, 6 Jan 2023 17:18:15 -0800 Subject: [PATCH 3/3] Fix PR comments --- CHANGELOG.md | 2 +- validator/validator.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15acf94..a80836a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ NEW FEATURES: -* added validation for the cron expression length to only allow 6-7 characters expressions. PR [#25](https://github.com/jfrog/terraform-provider-shared/pull/25) +* added validation for the cron expression length to only allow 6-7 parts expressions. PR [#25](https://github.com/jfrog/terraform-provider-shared/pull/25) ## 1.8.0 (December 21, 2022) diff --git a/validator/validator.go b/validator/validator.go index 4c1257b..bb1edae 100644 --- a/validator/validator.go +++ b/validator/validator.go @@ -48,12 +48,12 @@ func Cron(value interface{}, _ cty.Path) diag.Diagnostics { func CronLength(value interface{}, _ cty.Path) diag.Diagnostics { var diags diag.Diagnostics - cron := regexp.MustCompile("[^\\s]+").FindAllString(value.(string), -1) + cron := strings.Split(value.(string), " ") - if len(cron) > 7 || len(cron) < 6 { + if len(cron) < 6 || len(cron) > 7 { diags = append(diags, diag.Diagnostic{ Severity: diag.Error, - Summary: "Invalid Cron expression, value should be between 6 and 7 characters long", + Summary: "Invalid Cron expression, value should be between 6 and 7 parts long", Detail: fmt.Sprintf("%s is not a valid cron", value), }) }