diff --git a/pkg/spectooling/definition.go b/pkg/spectooling/definition.go index 7f48f0c5..b0fa7ee2 100644 --- a/pkg/spectooling/definition.go +++ b/pkg/spectooling/definition.go @@ -44,6 +44,14 @@ type DefaultPackageSanitized struct { Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` } +func NewDefaultPackageSanitizedFromYaml(data []byte) (*DefaultPackageSanitized, error) { + ans := &DefaultPackageSanitized{} + if err := yaml.Unmarshal(data, ans); err != nil { + return nil, err + } + return ans, nil +} + func NewDefaultPackageSanitized(p pkg.Package) *DefaultPackageSanitized { ans := &DefaultPackageSanitized{ Name: p.GetName(), @@ -110,3 +118,12 @@ func NewDefaultPackageSanitized(p pkg.Package) *DefaultPackageSanitized { func (p *DefaultPackageSanitized) Yaml() ([]byte, error) { return yaml.Marshal(p) } + +func (p *DefaultPackageSanitized) Clone() (*DefaultPackageSanitized, error) { + data, err := p.Yaml() + if err != nil { + return nil, err + } + + return NewDefaultPackageSanitizedFromYaml(data) +}