From a5d4abeadf486ce8042c16026f8c6bad0ddb65f9 Mon Sep 17 00:00:00 2001 From: Alex Hung Date: Thu, 28 Sep 2023 13:46:12 -0700 Subject: [PATCH 1/2] Add string validator for cron expression --- go.sum | 3 --- validator/fw/set.go | 2 +- validator/fw/string.go | 44 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 validator/fw/string.go diff --git a/go.sum b/go.sum index b305bf4..e889310 100644 --- a/go.sum +++ b/go.sum @@ -198,7 +198,6 @@ github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaU github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc= github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= @@ -300,8 +299,6 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= diff --git a/validator/fw/set.go b/validator/fw/set.go index 86d1011..d2f4b69 100644 --- a/validator/fw/set.go +++ b/validator/fw/set.go @@ -10,7 +10,7 @@ import ( "golang.org/x/exp/slices" ) -// Ensure our implementation satisfies the validator.Bool interface. +// Ensure our implementation satisfies the validator.Set interface. var _ validator.Set = &stringInSliceValidator{} type stringInSliceValidator struct { diff --git a/validator/fw/string.go b/validator/fw/string.go new file mode 100644 index 0000000..b61c419 --- /dev/null +++ b/validator/fw/string.go @@ -0,0 +1,44 @@ +package fw + +import ( + "context" + + "github.com/gorhill/cronexpr" + "github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" +) + +// Ensure our implementation satisfies the validator.String interface. +var _ validator.String = &cronValidator{} + +type cronValidator struct { +} + +func (validator cronValidator) Description(_ context.Context) string { + return "value must match be a valid cron expression" +} + +func (validator cronValidator) MarkdownDescription(ctx context.Context) string { + return validator.Description(ctx) +} + +func (v cronValidator) ValidateString(ctx context.Context, request validator.StringRequest, response *validator.StringResponse) { + if request.ConfigValue.IsNull() || request.ConfigValue.IsUnknown() { + return + } + + value := request.ConfigValue.ValueString() + + _, err := cronexpr.Parse(value) + if err != nil { + response.Diagnostics.Append(validatordiag.InvalidAttributeValueMatchDiagnostic( + request.Path, + v.Description(ctx), + value, + )) + } +} + +func IsCron() validator.String { + return cronValidator{} +} From 5934cf759e305620ee31e70b689728bceb1a51ea Mon Sep 17 00:00:00 2001 From: Alex Hung Date: Thu, 28 Sep 2023 13:47:03 -0700 Subject: [PATCH 2/2] Update CHANGELOG --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd26981..96acab7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.18.0 (Sep 28, 2023) + +NEW FEATURES: + +* added new string validator to check if string is valid cron expression. + +PR [#40](https://github.com/jfrog/terraform-provider-shared/pull/40) + ## 1.17.0 (May 30, 2023) NEW FEATURES: