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

     1  package labels
     2  
     3  import (
     4  	"gopkg.in/yaml.v3"
     5  )
     6  
     7  type Labels interface {
     8  	comparable
     9  	yaml.Marshaler
    10  	yaml.Unmarshaler
    11  	//	Major() int8
    12  }
    13  
    14  type IDLabels interface {
    15  	Labels
    16  	Name() string
    17  }
    18  
    19  type comparable interface {
    20  	Equal(comparable) bool
    21  }
    22  
    23  func K8sMap(l Labels) (map[string]string, error) {
    24  	return toMapOfStrings(l)
    25  }
    26  
    27  func MustK8sMap(l Labels) map[string]string {
    28  	m, err := K8sMap(l)
    29  	if err != nil {
    30  		panic(err)
    31  	}
    32  	return m
    33  }
    34  
    35  func toMapOfStrings(sth interface{}) (map[string]string, error) {
    36  	someBytes, err := yaml.Marshal(sth)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  	mapOfStrings := make(map[string]string)
    41  	return mapOfStrings, yaml.Unmarshal(someBytes, mapOfStrings)
    42  }