Add support for type label codegen
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package {{ .Package }}
|
||||
|
||||
// This file is auto-generated.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
//
|
||||
// Definitions file that controls how this file is generated:
|
||||
// {{ .Source }}
|
||||
|
||||
|
||||
{{ range $name, $set := .Types }}
|
||||
{{ if $set.LabelResourceType }}
|
||||
// SetLabel adds new label to label map
|
||||
func (m *{{ $name }}) SetLabel(key string, value string) {
|
||||
if m.Labels == nil {
|
||||
m.Labels = make(map[string]string)
|
||||
}
|
||||
|
||||
m.Labels[key] = value
|
||||
}
|
||||
|
||||
// GetLabels adds new label to label map
|
||||
func (m {{ $name }}) GetLabels() map[string]string {
|
||||
return m.Labels
|
||||
}
|
||||
|
||||
// GetLabels adds new label to label map
|
||||
func ({{ $name }}) LabelResourceKind() string {
|
||||
return {{ printf "%q" $set.LabelResourceType }}
|
||||
}
|
||||
|
||||
// GetLabels adds new label to label map
|
||||
func (m {{ $name }}) LabelResourceID() uint64 {
|
||||
return m.ID
|
||||
}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
+25
-1
@@ -5,6 +5,7 @@ import (
|
||||
"gopkg.in/yaml.v2"
|
||||
"os"
|
||||
"path"
|
||||
"syscall"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
@@ -23,7 +24,8 @@ type (
|
||||
}
|
||||
|
||||
typeDef struct {
|
||||
NoIdField bool `yaml:"noIdField"`
|
||||
NoIdField bool `yaml:"noIdField"`
|
||||
LabelResourceType string `yaml:"labelResourceType"`
|
||||
}
|
||||
)
|
||||
|
||||
@@ -65,6 +67,8 @@ func genTypes(tpl *template.Template, dd ...*typesDef) (err error) {
|
||||
var (
|
||||
typeGen = tpl.Lookup("type_set.gen.go.tpl")
|
||||
typeGenTest = tpl.Lookup("type_set.gen_test.go.tpl")
|
||||
|
||||
typeLabelsGen = tpl.Lookup("type_labels.gen.go.tpl")
|
||||
)
|
||||
|
||||
for _, d := range dd {
|
||||
@@ -79,7 +83,27 @@ func genTypes(tpl *template.Template, dd ...*typesDef) (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
labelsOutput := path.Join(d.outputDir, "type_labels.gen.go")
|
||||
if d.HasLabels() {
|
||||
err = goTemplate(labelsOutput, typeLabelsGen, d)
|
||||
} else if err = syscall.Unlink(labelsOutput); os.IsNotExist(err) {
|
||||
err = nil
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d typesDef) HasLabels() bool {
|
||||
for _, t := range d.Types {
|
||||
if len(t.LabelResourceType) > 0 {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user