48 lines
1.0 KiB
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
|
|
}
|