jx/internal/resource/document.go
2024-03-20 09:15:27 -07:00

36 lines
703 B
Go

package resource
import (
_ "fmt"
"io"
"gopkg.in/yaml.v3"
)
type Document struct {
Nodes []yaml.Node `yaml:"resources"`
ResourceDecls []Resource `-`
}
func NewDocument() *Document {
return &Document {}
}
func (d *Document) Load(r io.Reader) error {
yamlDecoder := yaml.NewDecoder(r)
yamlDecoder.Decode(d)
d.ResourceDecls = make([]Resource, len(d.Nodes))
for i,node := range(d.Nodes) {
resourceDecl := NewDeclaration()
node.Decode(resourceDecl)
if r,e := ResourceTypes.New(resourceDecl.Type); e == nil {
resourceDecl.Attributes.Decode(r)
d.ResourceDecls[i] = r
}
}
return nil
}
func (d *Document) Resources() []Resource {
return d.ResourceDecls
}