package resource import ( "gopkg.in/yaml.v3" ) type Declaration struct { Type string `yaml:"type"` Attributes yaml.Node `yaml:"attributes"` } type Resource interface { ResourceLoader StateTransformer } type ResourceLoader interface { LoadDecl(string) error } type StateTransformer interface { Apply() error } type YamlLoader func(string, any) error func YamlLoadDecl(yamlFileResourceDeclaration string, resource any) error { if err := yaml.Unmarshal([]byte(yamlFileResourceDeclaration), resource); err != nil { return err } return nil } type ResourceCreator interface { Create() error } type ResourceReader interface { Read() ([]byte, error) } type ResourceUpdater interface { Update() error } type ResourceDeleter interface { Delete() error } func NewDeclaration() *Declaration { return &Declaration{} } func (d *Declaration) LoadDecl(yamlResourceDeclaration string) error { return YamlLoadDecl(yamlResourceDeclaration, d) }