summaryrefslogtreecommitdiffstats
path: root/tpl/resources
diff options
context:
space:
mode:
authorAndreas Deininger <adeininger@urbanonline.de>2023-03-16 16:56:05 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2023-03-20 14:53:57 +0100
commit05c095a0e66f86cb31202442c7a1a54a348a1186 (patch)
tree8a24dfbdc83676a0131e19d4bd001df2f5fab2bc /tpl/resources
parent891b2918d208903ec5ab2c5d7c7ea1b9dc8c61f2 (diff)
resources.functions: improve validation
Diffstat (limited to 'tpl/resources')
-rw-r--r--tpl/resources/resources.go34
1 files changed, 29 insertions, 5 deletions
diff --git a/tpl/resources/resources.go b/tpl/resources/resources.go
index cc5310277..d18797ebc 100644
--- a/tpl/resources/resources.go
+++ b/tpl/resources/resources.go
@@ -145,7 +145,7 @@ func (ns *Namespace) Get(filename any) resource.Resource {
//
// A second argument may be provided with an option map.
//
-// Note: This method does not return any error as a second argument,
+// Note: This method does not return any error as a second return value,
// for any error situations the error can be checked in .Err.
func (ns *Namespace) GetRemote(args ...any) resource.Resource {
get := func(args ...any) (resource.Resource, error) {
@@ -153,6 +153,10 @@ func (ns *Namespace) GetRemote(args ...any) resource.Resource {
return nil, errors.New("must provide an URL")
}
+ if len(args) > 2 {
+ return nil, errors.New("must not provide more arguments than URL and options")
+ }
+
urlstr, err := cast.ToStringE(args[0])
if err != nil {
return nil, err
@@ -302,8 +306,12 @@ func (ns *Namespace) ExecuteAsTemplate(ctx context.Context, args ...any) (resour
// Fingerprint transforms the given Resource with a MD5 hash of the content in
// the RelPermalink and Permalink.
func (ns *Namespace) Fingerprint(args ...any) (resource.Resource, error) {
- if len(args) < 1 || len(args) > 2 {
- return nil, errors.New("must provide a Resource and (optional) crypto algo")
+ if len(args) < 1 {
+ return nil, errors.New("must provide a Resource object")
+ }
+
+ if len(args) > 2 {
+ return nil, errors.New("must not provide more arguments than Resource and hash algorithm")
}
var algo string
@@ -332,9 +340,15 @@ func (ns *Namespace) Minify(r resources.ResourceTransformer) (resource.Resource,
return ns.minifyClient.Minify(r)
}
-// ToCSS converts the given Resource to CSS. You can optional provide an Options
-// object or a target path (string) as first argument.
+// ToCSS converts the given Resource to CSS. You can optional provide an Options object
+// as second argument. As an option, you can e.g. specify e.g. the target path (string)
+// for the converted CSS resource.
func (ns *Namespace) ToCSS(args ...any) (resource.Resource, error) {
+
+ if len(args) > 2 {
+ return nil, errors.New("must not provide more arguments than resource object and options")
+ }
+
const (
// Transpiler implementation can be controlled from the client by
// setting the 'transpiler' option.
@@ -404,6 +418,11 @@ func (ns *Namespace) ToCSS(args ...any) (resource.Resource, error) {
// PostCSS processes the given Resource with PostCSS
func (ns *Namespace) PostCSS(args ...any) (resource.Resource, error) {
+
+ if len(args) > 2 {
+ return nil, errors.New("must not provide more arguments than resource object and options")
+ }
+
r, m, err := resourcehelpers.ResolveArgs(args)
if err != nil {
return nil, err
@@ -419,6 +438,11 @@ func (ns *Namespace) PostProcess(r resource.Resource) (postpub.PostPublishedReso
// Babel processes the given Resource with Babel.
func (ns *Namespace) Babel(args ...any) (resource.Resource, error) {
+
+ if len(args) > 2 {
+ return nil, errors.New("must not provide more arguments than resource object and options")
+ }
+
r, m, err := resourcehelpers.ResolveArgs(args)
if err != nil {
return nil, err