TrueChartsClone/tests/helmunit/manifestCollection.go

48 lines
1.0 KiB
Go

package helmunit
import (
"errors"
"strings"
"github.com/Jeffail/gabs"
)
type manifestCollection map[string]map[string]gabs.Container
func (c *manifestCollection) Initialize() {
*c = make(manifestCollection)
}
func (c *manifestCollection) Add(yamlInput []byte) error {
collection := *c
jsonManifest, err := yamlToJson(yamlInput)
if err != nil {
return err
}
kind := strings.ToLower(jsonManifest.Path("kind").Data().(string))
name := strings.ToLower(jsonManifest.Path("metadata.name").Data().(string))
if kind == "" || name == "" {
return errors.New("invalid manifest")
}
data, ok := collection[kind]
if !ok {
data = make(map[string]gabs.Container)
collection[kind] = data
}
data[name] = *jsonManifest
return nil
}
func (c *manifestCollection) Get(kind string, name string) *gabs.Container {
collection := *c
manifest, ok := collection[strings.ToLower(kind)][strings.ToLower(name)]
if !ok {
return nil
}
return &manifest
}