package core // Resource represents a deployment unit. type Resource interface { // resource's stack. Stack() Stack // resource's Type. Type() string // resource's ID within stack. ID() string } // NewResourceMeta constructs new resource metadata. func NewResourceMeta(stack Stack, resType string, id string) ResourceMeta { return ResourceMeta{ stack: stack, resType: resType, id: id, } } // Metadata for all resources. type ResourceMeta struct { stack Stack resType string id string } func (m *ResourceMeta) Stack() Stack { return m.stack } func (m *ResourceMeta) Type() string { return m.resType } func (m *ResourceMeta) ID() string { return m.id } // ResourceVisitor represents a functor that can operate on a resource. type ResourceVisitor interface { Visit(res Resource) error }