Skip to content

Commit

Permalink
resources.functions: improve validation
Browse files Browse the repository at this point in the history
  • Loading branch information
deining authored and bep committed Mar 20, 2023
1 parent 891b291 commit 05c095a
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
2 changes: 1 addition & 1 deletion resources/resource_transformers/integrity/integrity.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ func newHash(algo string) (hash.Hash, error) {
case "sha512":
return sha512.New(), nil
default:
return nil, fmt.Errorf("unsupported crypto algo: %q, use either md5, sha256, sha384 or sha512", algo)
return nil, fmt.Errorf("unsupported hash algorithm: %q, use either md5, sha256, sha384 or sha512", algo)
}
}

Expand Down
34 changes: 29 additions & 5 deletions tpl/resources/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,14 +145,18 @@ 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) {
if len(args) < 1 {
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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit 05c095a

Please sign in to comment.