github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/pkg/labels/name.go (about)

     1  package labels
     2  
     3  import (
     4  	"errors"
     5  
     6  	"gopkg.in/yaml.v3"
     7  )
     8  
     9  var _ IDLabels = (*Name)(nil)
    10  
    11  type Name struct {
    12  	model InternalName
    13  	base  *Component
    14  }
    15  
    16  type InternalNameProp struct {
    17  	Name string `yaml:"app.kubernetes.io/name,omitempty"`
    18  }
    19  
    20  type InternalName struct {
    21  	InternalNameProp  `yaml:",inline"`
    22  	InternalComponent `yaml:",inline"`
    23  }
    24  
    25  func ForName(l *Component, name string) (*Name, error) {
    26  	if name == "" {
    27  		return nil, errors.New("name must not be nil")
    28  	}
    29  	return newName(l, name), nil
    30  }
    31  
    32  func newName(c *Component, name string) *Name {
    33  	return &Name{
    34  		base: c,
    35  		model: InternalName{
    36  			InternalNameProp:  InternalNameProp{Name: name},
    37  			InternalComponent: c.model,
    38  		},
    39  	}
    40  }
    41  
    42  func NameFrom(arbitrary map[string]string) (*Name, error) {
    43  	intermediate, err := yaml.Marshal(arbitrary)
    44  	if err != nil {
    45  		panic(err)
    46  	}
    47  	n := &Name{}
    48  	return n, yaml.Unmarshal(intermediate, n)
    49  }
    50  
    51  func MustForName(l *Component, name string) *Name {
    52  	n, err := ForName(l, name)
    53  	if err != nil {
    54  		panic(err)
    55  	}
    56  	return n
    57  }
    58  
    59  func (l *Name) Name() string {
    60  	return l.model.Name
    61  }
    62  
    63  /*
    64  func (l *Name) Major() int8 {
    65  	return l.base.Major()
    66  }
    67  */
    68  
    69  func (l *Name) Equal(r comparable) bool {
    70  	if right, ok := r.(*Name); ok {
    71  		return l.model == right.model
    72  	}
    73  	return false
    74  }
    75  
    76  func (l *Name) MarshalYAML() (interface{}, error) {
    77  	return l.model, nil
    78  }
    79  
    80  func (l *Name) UnmarshalYAML(node *yaml.Node) error {
    81  	if err := node.Decode(&l.model); err != nil {
    82  		return err
    83  	}
    84  	l.base = &Component{}
    85  	return node.Decode(l.base)
    86  }