feat context: Add support for resource set collections

A resource set collection is a resource set with an addition 'include' array
configured. It is a short-hand for importing multiple resource sets from the
same folder and for excluding/including them as a group.

See https://github.com/tazjin/kontemplate/issues/9 for more information.

Closes #9
This commit is contained in:
Vincent Ambo 2017-02-08 17:14:40 +01:00
parent d6b16793c1
commit 4e8223ef34
2 changed files with 29 additions and 5 deletions

View file

@ -14,6 +14,10 @@ import (
type ResourceSet struct {
Name string `json:"name"`
Values map[string]interface{} `json:"values"`
// Fields for resource set collections
Include []ResourceSet `json:"include"`
Parent *string
}
type Context struct {
@ -63,3 +67,23 @@ func LoadContextFromFile(filename string) (*Context, error) {
return &c, nil
}
// Flattens resource set collections, i.e. resource sets that themselves have an additional 'include' field set.
// Those will be regarded as a short-hand for including multiple resource sets from a subfolder.
// See https://github.com/tazjin/kontemplate/issues/9 for more information.
func flattenResourceSetCollections(rs *[]ResourceSet) *[]ResourceSet {
flattened := make([]ResourceSet, 0)
for _, r := range *rs {
if len(r.Include) == 0 {
flattened = append(flattened, r)
} else {
for _, subResourceSet := range r.Include {
subResourceSet.Parent = &r.Name
flattened = append(flattened, subResourceSet)
}
}
}
return &flattened
}