36 lines
703 B
Go
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
|
|
}
|