From 578b66547c9ba90ea197821567e5bb104cc70a49 Mon Sep 17 00:00:00 2001 From: fanmin shi Date: Thu, 22 Feb 2018 12:40:39 -0800 Subject: [PATCH 1/2] pkg/generator: fold apis/**.go generators into renderPkg() --- pkg/generator/generator.go | 64 +++++++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 15 deletions(-) diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go index c69b6027017..e3105db6a63 100644 --- a/pkg/generator/generator.go +++ b/pkg/generator/generator.go @@ -9,7 +9,8 @@ import ( ) const ( - defaultFileMode = 0750 + defaultDirFileMode = 0750 + defaultFileMode = 0644 // dirs cmdDir = "cmd" deployDir = "deploy" @@ -22,8 +23,11 @@ const ( stubDir = pkgDir + "/stub" // files - main = "main.go" - handler = "handler.go" + main = "main.go" + handler = "handler.go" + doc = "doc.go" + register = "register.go" + types = "types.go" ) type Generator struct { @@ -83,7 +87,7 @@ func (g *Generator) pullDep() error { func (g *Generator) renderCmd() error { cpDir := filepath.Join(g.projectName, cmdDir, g.projectName) - if err := os.MkdirAll(cpDir, defaultFileMode); err != nil { + if err := os.MkdirAll(cpDir, defaultDirFileMode); err != nil { return err } @@ -91,7 +95,7 @@ func (g *Generator) renderCmd() error { if err := renderMain(buf, g.repoPath, version(g.apiVersion), apiDirName(g.apiVersion), g.kind, toPlural(g.kind)); err != nil { return err } - return ioutil.WriteFile(filepath.Join(cpDir, main), buf.Bytes(), 0644) + return ioutil.WriteFile(filepath.Join(cpDir, main), buf.Bytes(), defaultFileMode) } func toPlural(kind string) string { @@ -99,7 +103,7 @@ func toPlural(kind string) string { } func (g *Generator) renderConfig() error { - if err := os.MkdirAll(filepath.Join(g.projectName, configDir), defaultFileMode); err != nil { + if err := os.MkdirAll(filepath.Join(g.projectName, configDir), defaultDirFileMode); err != nil { return err } // TODO render files. @@ -107,7 +111,7 @@ func (g *Generator) renderConfig() error { } func (g *Generator) renderDeploy() error { - if err := os.MkdirAll(filepath.Join(g.projectName, deployDir), defaultFileMode); err != nil { + if err := os.MkdirAll(filepath.Join(g.projectName, deployDir), defaultDirFileMode); err != nil { return err } // TODO render files. @@ -115,10 +119,10 @@ func (g *Generator) renderDeploy() error { } func (g *Generator) renderTmp() error { - if err := os.MkdirAll(filepath.Join(g.projectName, buildDir), defaultFileMode); err != nil { + if err := os.MkdirAll(filepath.Join(g.projectName, buildDir), defaultDirFileMode); err != nil { return err } - if err := os.MkdirAll(filepath.Join(g.projectName, codegenDir), defaultFileMode); err != nil { + if err := os.MkdirAll(filepath.Join(g.projectName, codegenDir), defaultDirFileMode); err != nil { return err } // TODO render files. @@ -126,22 +130,52 @@ func (g *Generator) renderTmp() error { } func (g *Generator) renderPkg() error { - if err := os.MkdirAll(filepath.Join(g.projectName, apisDir, apiDirName(g.apiVersion), version(g.apiVersion)), defaultFileMode); err != nil { + v := version(g.apiVersion) + apiDir := filepath.Join(g.projectName, apisDir, apiDirName(g.apiVersion), v) + if err := os.MkdirAll(apiDir, defaultDirFileMode); err != nil { return err } + if err := renderAPIFiles(apiDir, groupName(g.apiVersion), v, g.kind); err != nil { + return err + } + sDir := filepath.Join(g.projectName, stubDir) - if err := os.MkdirAll(sDir, defaultFileMode); err != nil { + if err := os.MkdirAll(sDir, defaultDirFileMode); err != nil { return err } + return renderStubFiles(sDir) +} + +func renderAPIFiles(apiDir, groupName, version, kind string) error { buf := &bytes.Buffer{} - if err := renderHandler(buf); err != nil { + if err := renderAPIDocFile(buf, groupName, version); err != nil { return err } - if err := ioutil.WriteFile(filepath.Join(sDir, handler), buf.Bytes(), 0644); err != nil { + if err := ioutil.WriteFile(filepath.Join(apiDir, doc), buf.Bytes(), defaultFileMode); err != nil { return err } - // TODO render files. - return nil + + buf = &bytes.Buffer{} + if err := renderAPIRegisterFile(buf, kind, groupName, version); err != nil { + return err + } + if err := ioutil.WriteFile(filepath.Join(apiDir, register), buf.Bytes(), defaultFileMode); err != nil { + return err + } + + buf = &bytes.Buffer{} + if err := renderAPITypesFile(buf, kind, version); err != nil { + return err + } + return ioutil.WriteFile(filepath.Join(apiDir, types), buf.Bytes(), defaultFileMode) +} + +func renderStubFiles(stubDir string) error { + buf := &bytes.Buffer{} + if err := renderHandler(buf); err != nil { + return err + } + return ioutil.WriteFile(filepath.Join(stubDir, handler), buf.Bytes(), defaultFileMode) } // version extracts the VERSION from the given apiVersion ($GROUP_NAME/$VERSION). From 70e8296a8071a26a0e5a798a7e130b2837dff049 Mon Sep 17 00:00:00 2001 From: fanmin shi Date: Thu, 22 Feb 2018 13:14:35 -0800 Subject: [PATCH 2/2] pkg/generator: renaming Apis -> API --- pkg/generator/{apis_tmpls.go => api_tmpls.go} | 11 ++++++----- pkg/generator/{gen_apis_doc.go => gen_api_doc.go} | 10 +++++----- .../{gen_apis_register.go => gen_api_register.go} | 10 +++++----- pkg/generator/{gen_apis_types.go => gen_api_types.go} | 10 +++++----- 4 files changed, 21 insertions(+), 20 deletions(-) rename pkg/generator/{apis_tmpls.go => api_tmpls.go} (85%) rename pkg/generator/{gen_apis_doc.go => gen_api_doc.go} (58%) rename pkg/generator/{gen_apis_register.go => gen_api_register.go} (70%) rename pkg/generator/{gen_apis_types.go => gen_api_types.go} (60%) diff --git a/pkg/generator/apis_tmpls.go b/pkg/generator/api_tmpls.go similarity index 85% rename from pkg/generator/apis_tmpls.go rename to pkg/generator/api_tmpls.go index 2074f3c0d4c..f47d6c4d659 100644 --- a/pkg/generator/apis_tmpls.go +++ b/pkg/generator/api_tmpls.go @@ -1,13 +1,13 @@ package generator -// apisDocTmpl is the template for apis/../doc.go -const apisDocTmpl = `// +k8s:deepcopy-gen=package +// apiDocTmpl is the template for apis/../doc.go +const apiDocTmpl = `// +k8s:deepcopy-gen=package // +groupName={{.GroupName}} package {{.Version}} ` -// apisRegisterTmpl is the template for apis/../register.go -const apisRegisterTmpl = `package {{.Version}} +// apiRegisterTmpl is the template for apis/../register.go +const apiRegisterTmpl = `package {{.Version}} import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -38,7 +38,8 @@ func addKnownTypes(scheme *runtime.Scheme) error { } ` -const apisTypesTmpl = `package {{.Version}} +// apiTypesTmpl is the template for apis/../types.go +const apiTypesTmpl = `package {{.Version}} import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/pkg/generator/gen_apis_doc.go b/pkg/generator/gen_api_doc.go similarity index 58% rename from pkg/generator/gen_apis_doc.go rename to pkg/generator/gen_api_doc.go index f51dca5f9bc..897c3097c76 100644 --- a/pkg/generator/gen_apis_doc.go +++ b/pkg/generator/gen_api_doc.go @@ -5,17 +5,17 @@ import ( "text/template" ) -// Doc contains all the customized data needed to generate apis/../doc.go for a new operator +// Doc contains all the customized data needed to generate apis//doc.go for a new operator // when pairing with apisDocTmpl template. type Doc struct { GroupName string Version string } -// renderApisDoc generates the apis/../doc.go file. -func renderApisDoc(w io.Writer, groupName, version string) error { - t := template.New("apis/../doc.go") - t, err := t.Parse(apisDocTmpl) +// renderAPIDocFile generates the apis//doc.go file. +func renderAPIDocFile(w io.Writer, groupName, version string) error { + t := template.New("apis//doc.go") + t, err := t.Parse(apiDocTmpl) if err != nil { return err } diff --git a/pkg/generator/gen_apis_register.go b/pkg/generator/gen_api_register.go similarity index 70% rename from pkg/generator/gen_apis_register.go rename to pkg/generator/gen_api_register.go index b6c3c9fb838..44b6fb2317f 100644 --- a/pkg/generator/gen_apis_register.go +++ b/pkg/generator/gen_api_register.go @@ -8,7 +8,7 @@ import ( const pluralSuffix = "s" -// Register contains all the customized data needed to generate apis/../register.go +// Register contains all the customized data needed to generate apis//register.go // for a new operator when pairing with apisDocTmpl template. type Register struct { GroupName string @@ -17,10 +17,10 @@ type Register struct { KindPlural string } -// renderApisDoc generates the apis/../doc.go file. -func renderApisRegister(w io.Writer, kind, groupName, version string) error { - t := template.New("apis/../register.go") - t, err := t.Parse(apisRegisterTmpl) +// renderAPIRegisterFile generates the apis//register.go file. +func renderAPIRegisterFile(w io.Writer, kind, groupName, version string) error { + t := template.New("apis//register.go") + t, err := t.Parse(apiRegisterTmpl) if err != nil { return err } diff --git a/pkg/generator/gen_apis_types.go b/pkg/generator/gen_api_types.go similarity index 60% rename from pkg/generator/gen_apis_types.go rename to pkg/generator/gen_api_types.go index 7c268a742e7..2d8dc4a30b7 100644 --- a/pkg/generator/gen_apis_types.go +++ b/pkg/generator/gen_api_types.go @@ -5,17 +5,17 @@ import ( "text/template" ) -// Types contains all the customized data needed to generate apis/../types.go +// Types contains all the customized data needed to generate apis//types.go // for a new operator when pairing with apisTypesTmpl template. type Types struct { Version string Kind string } -// renderApisTypes generates the apis/../types.go file. -func renderApisTypes(w io.Writer, kind, version string) error { - t := template.New("apis/../types.go") - t, err := t.Parse(apisTypesTmpl) +// renderAPITypesFile generates the apis//types.go file. +func renderAPITypesFile(w io.Writer, kind, version string) error { + t := template.New("apis//types.go") + t, err := t.Parse(apiTypesTmpl) if err != nil { return err }