diff --git a/upup/tools/generators/fitask/generator.go b/upup/tools/generators/fitask/generator.go index 9fc1838601..0a4f083a77 100644 --- a/upup/tools/generators/fitask/generator.go +++ b/upup/tools/generators/fitask/generator.go @@ -28,7 +28,25 @@ type FitaskGenerator struct { var _ codegen.Generator = &FitaskGenerator{} -const headerDef = ` +const fileHeaderDef = `/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +` + +var preambleDef = ` package {{.Package}} import ( @@ -44,6 +62,7 @@ const perTypeDef = ` // JSON marshalling boilerplate type real{{.Name}} {{.Name}} +// UnmarshalJSON implements conversion to JSON, supporitng an alternate specification of the object as a string func (o *{{.Name}}) UnmarshalJSON(data []byte) error { var jsonName string if err := json.Unmarshal(data, &jsonName); err == nil { @@ -61,16 +80,19 @@ func (o *{{.Name}}) UnmarshalJSON(data []byte) error { var _ fi.HasName = &{{.Name}}{} -func (e *{{.Name}}) GetName() *string { - return e.Name +// GetName returns the Name of the object, implementing fi.HasName +func (o *{{.Name}}) GetName() *string { + return o.Name } -func (e *{{.Name}}) SetName(name string) { - e.Name = &name +// SetName sets the Name of the object, implementing fi.SetName +func (o *{{.Name}}) SetName(name string) { + o.Name = &name } -func (e *{{.Name}}) String() string { - return fi.TaskAsString(e) +// String is the stringer function for the task, producing readable output using fi.TaskAsString +func (o *{{.Name}}) String() string { + return fi.TaskAsString(o) } ` @@ -80,8 +102,14 @@ func (g *FitaskGenerator) Init(parser *codegen.GoParser) error { return nil } -func (g *FitaskGenerator) WriteHeader(w io.Writer) error { - t := template.Must(template.New("Header").Parse(headerDef)) +func (g *FitaskGenerator) WriteFileHeader(w io.Writer) error { + t := template.Must(template.New("FileHeader").Parse(fileHeaderDef)) + + return t.Execute(w, g) +} + +func (g *FitaskGenerator) WritePreamble(w io.Writer) error { + t := template.Must(template.New("Preamble").Parse(preambleDef)) return t.Execute(w, g) } diff --git a/upup/tools/generators/pkg/codegen/generator.go b/upup/tools/generators/pkg/codegen/generator.go index e261495f58..18492b8330 100644 --- a/upup/tools/generators/pkg/codegen/generator.go +++ b/upup/tools/generators/pkg/codegen/generator.go @@ -20,6 +20,7 @@ import "io" type Generator interface { Init(parser *GoParser) error - WriteHeader(w io.Writer) error + WriteFileHeader(w io.Writer) error + WritePreamble(w io.Writer) error WriteType(w io.Writer, typeName string) error } diff --git a/upup/tools/generators/pkg/codegen/main_helper.go b/upup/tools/generators/pkg/codegen/main_helper.go index b159476fdf..d06475861d 100644 --- a/upup/tools/generators/pkg/codegen/main_helper.go +++ b/upup/tools/generators/pkg/codegen/main_helper.go @@ -86,9 +86,14 @@ func RunGenerator(key string, generator Generator) { var b bytes.Buffer + err = generator.WriteFileHeader(&b) + if err != nil { + log.Fatalf("error generating header: %v", err) + } + fmt.Fprintf(&b, "// Code generated by \"%q %s\"; DO NOT EDIT\n\n", key, strings.Join(os.Args[1:], " ")) - err = generator.WriteHeader(&b) + err = generator.WritePreamble(&b) if err != nil { log.Fatalf("error generating header: %v", err) }