From 7d880e0bd9b10e9f88ae76f67d41bdd4c6e9d402 Mon Sep 17 00:00:00 2001 From: Ish Shah Date: Wed, 13 Jun 2018 13:38:19 -0700 Subject: [PATCH 1/4] Clean up directory generation --- pkg/generator/generator.go | 63 ++++++++++---------------------------- 1 file changed, 17 insertions(+), 46 deletions(-) diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go index cf69334bf5..d84364992d 100644 --- a/pkg/generator/generator.go +++ b/pkg/generator/generator.go @@ -533,52 +533,23 @@ type tmplData struct { // Creates all the necesary directories for the generated files func (g *Generator) generateDirStructure() error { - if err := os.MkdirAll(g.projectName, defaultDirFileMode); err != nil { - return err - } - - cpDir := filepath.Join(g.projectName, cmdDir, g.projectName) - if err := os.MkdirAll(cpDir, defaultDirFileMode); err != nil { - return err - } - - cp := filepath.Join(g.projectName, configDir) - if err := os.MkdirAll(cp, defaultDirFileMode); err != nil { - return err - } - - dp := filepath.Join(g.projectName, deployDir) - if err := os.MkdirAll(dp, defaultDirFileMode); err != nil { - return err - } - - op := filepath.Join(g.projectName, olmCatalogDir) - if err := os.MkdirAll(op, defaultDirFileMode); err != nil { - return err - } - - bDir := filepath.Join(g.projectName, buildDir) - if err := os.MkdirAll(bDir, defaultDirFileMode); err != nil { - return err - } - cDir := filepath.Join(g.projectName, codegenDir) - if err := os.MkdirAll(cDir, defaultDirFileMode); err != nil { - return err - } - - if err := os.MkdirAll(filepath.Join(g.projectName, versionDir), defaultDirFileMode); err != nil { - return err - } - - v := version(g.apiVersion) - adn := apiDirName(g.apiVersion) - apiDir := filepath.Join(g.projectName, apisDir, adn, v) - if err := os.MkdirAll(apiDir, defaultDirFileMode); err != nil { - return err - } - sDir := filepath.Join(g.projectName, stubDir) - if err := os.MkdirAll(sDir, defaultDirFileMode); err != nil { - return err + dirsToCreate := []string{ + g.projectName, + filepath.Join(g.projectName, cmdDir, g.projectName), + filepath.Join(g.projectName, configDir), + filepath.Join(g.projectName, deployDir), + filepath.Join(g.projectName, olmCatalogDir), + filepath.Join(g.projectName, buildDir), + filepath.Join(g.projectName, codegenDir), + filepath.Join(g.projectName, versionDir), + filepath.Join(g.projectName, apisDir, apiDirName(g.apiVersion), version(g.apiVersion)), + filepath.Join(g.projectName, stubDir), + } + + for _, dir := range dirsToCreate { + if err := os.MkdirAll(dir, defaultDirFileMode); err != nil { + return err + } } return nil From 50d2d4e0bf98e11126040ff029b01ae4b4c64a0d Mon Sep 17 00:00:00 2001 From: Ish Shah Date: Wed, 13 Jun 2018 13:45:12 -0700 Subject: [PATCH 2/4] Combined file write and render func --- pkg/generator/generator.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go index d84364992d..3a8e88985f 100644 --- a/pkg/generator/generator.go +++ b/pkg/generator/generator.go @@ -594,3 +594,18 @@ func writeFileAndPrint(filePath string, data []byte, fileMode os.FileMode) error fmt.Printf("Create %v \n", filePath) return nil } + +// Combines steps of creating buffer, writing to buffer, and writing buffer to file in one call +func renderWriteFile(filePath string, fileLoc string, fileTmpl string, info tmplData) error { + buf := &bytes.Buffer{} + + if err := renderFile(buf, fileLoc, fileTmpl, info); err != nil { + return err + } + + if err := writeFileAndPrint(filePath, buf.Bytes(), defaultFileMode); err != nil { + return err + } + + return nil +} From ee20d2104db9bd07457c45643efae8d648e6ea7f Mon Sep 17 00:00:00 2001 From: Ish Shah Date: Wed, 13 Jun 2018 14:03:08 -0700 Subject: [PATCH 3/4] Use new function in place of buf, render, write --- pkg/generator/generator.go | 114 +++++++------------------------------ 1 file changed, 19 insertions(+), 95 deletions(-) diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go index 3a8e88985f..a75486a86a 100644 --- a/pkg/generator/generator.go +++ b/pkg/generator/generator.go @@ -176,8 +176,6 @@ func (g *Generator) renderCmd() error { } func renderCmdFiles(cmdProjectDir, repoPath, apiVersion, kind string) error { - buf := &bytes.Buffer{} - td := tmplData{ OperatorSDKImport: sdkImport, StubImport: filepath.Join(repoPath, stubDir), @@ -187,11 +185,7 @@ func renderCmdFiles(cmdProjectDir, repoPath, apiVersion, kind string) error { Kind: kind, } - if err := renderFile(buf, "cmd//main.go", mainTmpl, td); err != nil { - return err - } - - return writeFileAndPrint(filepath.Join(cmdProjectDir, main), buf.Bytes(), defaultFileMode) + return renderWriteFile(filepath.Join(cmdProjectDir, main), "cmd//main.go", mainTmpl, td) } func (g *Generator) renderConfig() error { @@ -213,34 +207,23 @@ func (g *Generator) renderDeploy() error { } func renderRBAC(deployDir, projectName, groupName string) error { - buf := &bytes.Buffer{} - td := tmplData{ ProjectName: projectName, GroupName: groupName, } - if err := renderFile(buf, rbacTmplName, rbacYamlTmpl, td); err != nil { - return err - } - - return writeFileAndPrint(filepath.Join(deployDir, rbacYaml), buf.Bytes(), defaultFileMode) + return renderWriteFile(filepath.Join(deployDir, rbacYaml), rbacTmplName, rbacYamlTmpl, td) } func renderDeployFiles(deployDir, projectName, apiVersion, kind string) error { - buf := &bytes.Buffer{} rbacTd := tmplData{ ProjectName: projectName, GroupName: groupName(apiVersion), } - if err := renderFile(buf, rbacTmplName, rbacYamlTmpl, rbacTd); err != nil { - return err - } - if err := writeFileAndPrint(filepath.Join(deployDir, rbacYaml), buf.Bytes(), defaultFileMode); err != nil { + if err := renderWriteFile(filepath.Join(deployDir, rbacYaml), rbacTmplName, rbacYamlTmpl, rbacTd); err != nil { return err } - buf = &bytes.Buffer{} crdTd := tmplData{ Kind: kind, KindSingular: strings.ToLower(kind), @@ -248,35 +231,24 @@ func renderDeployFiles(deployDir, projectName, apiVersion, kind string) error { GroupName: groupName(apiVersion), Version: version(apiVersion), } - if err := renderFile(buf, crdTmplName, crdYamlTmpl, crdTd); err != nil { - return err - } - if err := writeFileAndPrint(filepath.Join(deployDir, crdYaml), buf.Bytes(), defaultFileMode); err != nil { + if err := renderWriteFile(filepath.Join(deployDir, crdYaml), crdTmplName, crdYamlTmpl, crdTd); err != nil { return err } - buf = &bytes.Buffer{} crTd := tmplData{ APIVersion: apiVersion, Kind: kind, } - if err := renderFile(buf, crTmplName, crYamlTmpl, crTd); err != nil { - return err - } - return writeFileAndPrint(filepath.Join(deployDir, crYaml), buf.Bytes(), defaultFileMode) + return renderWriteFile(filepath.Join(deployDir, crYaml), crTmplName, crYamlTmpl, crTd) } // RenderOperatorYaml generates "deploy/operator.yaml" func RenderOperatorYaml(c *Config, image string) error { - buf := &bytes.Buffer{} td := tmplData{ ProjectName: c.ProjectName, Image: image, } - if err := renderFile(buf, operatorTmplName, operatorYamlTmpl, td); err != nil { - return err - } - return ioutil.WriteFile(operatorYaml, buf.Bytes(), defaultFileMode) + return renderWriteFile(operatorYaml, operatorTmplName, operatorYamlTmpl, td) } // RenderOlmCatalog generates catalog manifests "deploy/olm-catalog/*" @@ -290,22 +262,17 @@ func RenderOlmCatalog(c *Config, image, version string) error { olmDir := filepath.Join(repoPath, olmCatalogDir) // deploy/olm-catalog/package.yaml - buf := &bytes.Buffer{} cpTd := tmplData{ PackageName: strings.ToLower(c.Kind), ChannelName: packageChannel, CurrentCSV: getCSVName(strings.ToLower(c.Kind), version), } - if err := renderFile(buf, catalogPackageYaml, catalogPackageTmpl, cpTd); err != nil { - return err - } path := filepath.Join(olmDir, catalogPackageYaml) - if err := ioutil.WriteFile(path, buf.Bytes(), defaultFileMode); err != nil { + if err := renderWriteFile(path, catalogPackageYaml, catalogPackageTmpl, cpTd); err != nil { return err } // deploy/olm-catalog/crd.yaml - buf = &bytes.Buffer{} ccrdTd := tmplData{ Kind: c.Kind, KindSingular: strings.ToLower(c.Kind), @@ -313,16 +280,12 @@ func RenderOlmCatalog(c *Config, image, version string) error { GroupName: groupName(c.APIVersion), Version: version, } - if err := renderFile(buf, catalogCRDTmplName, crdTmpl, ccrdTd); err != nil { - return err - } path = filepath.Join(olmDir, crdYaml) - if err := ioutil.WriteFile(path, buf.Bytes(), defaultFileMode); err != nil { + if err := renderWriteFile(path, catalogCRDTmplName, crdTmpl, ccrdTd); err != nil { return err } // deploy/olm-catalog/csv.yaml - buf = &bytes.Buffer{} ccsvTd := tmplData{ Kind: c.Kind, KindSingular: strings.ToLower(c.Kind), @@ -334,11 +297,8 @@ func RenderOlmCatalog(c *Config, image, version string) error { CatalogVersion: version, ProjectName: c.ProjectName, } - if err := renderFile(buf, catalogCSVYaml, catalogCSVTmpl, ccsvTd); err != nil { - return err - } path = filepath.Join(olmDir, catalogCSVYaml) - return ioutil.WriteFile(path, buf.Bytes(), defaultFileMode) + return renderWriteFile(path, catalogCSVYaml, catalogCSVTmpl, ccsvTd) } func getCSVName(name, version string) string { @@ -356,35 +316,24 @@ func (g *Generator) renderTmp() error { } func (g *Generator) renderVersion() error { - buf := &bytes.Buffer{} - td := tmplData{ VersionNumber: "0.0.1", } - if err := renderFile(buf, "version/version.go", versionTmpl, td); err != nil { - return err - } - - return writeFileAndPrint(filepath.Join(g.projectName, versionDir, versionfile), buf.Bytes(), defaultFileMode) + return renderWriteFile(filepath.Join(g.projectName, versionDir, versionfile), "version/version.go", versionTmpl, td) } func renderBuildFiles(buildDir, repoPath, projectName string) error { - buf := &bytes.Buffer{} - bTd := tmplData{ ProjectName: projectName, RepoPath: repoPath, } - if err := renderFile(buf, "tmp/build/build.sh", buildTmpl, bTd); err != nil { - return err - } - if err := writeFileAndPrint(filepath.Join(buildDir, build), buf.Bytes(), defaultExecFileMode); err != nil { + if err := renderWriteFile(filepath.Join(buildDir, build), "tmp/build/build.sh", buildTmpl, bTd); err != nil { return err } - buf = &bytes.Buffer{} + buf := &bytes.Buffer{} if err := renderDockerBuildFile(buf); err != nil { return err } @@ -392,14 +341,13 @@ func renderBuildFiles(buildDir, repoPath, projectName string) error { return err } - buf = &bytes.Buffer{} dTd := tmplData{ ProjectName: projectName, } if err := renderFile(buf, "tmp/build/Dockerfile", dockerFileTmpl, dTd); err != nil { return err } - return writeFileAndPrint(filepath.Join(buildDir, dockerfile), buf.Bytes(), defaultFileMode) + return renderWriteFile(filepath.Join(buildDir, dockerfile), "tmp/build/Dockerfile", dockerFileTmpl, dTd) } func renderDockerBuildFile(w io.Writer) error { @@ -408,27 +356,19 @@ func renderDockerBuildFile(w io.Writer) error { } func renderCodegenFiles(codegenDir, repoPath, apiDirName, version, projectName string) error { - buf := &bytes.Buffer{} bTd := tmplData{ ProjectName: projectName, } - if err := renderFile(buf, "codegen/boilerplate.go.txt", boilerplateTmpl, bTd); err != nil { - return err - } - if err := writeFileAndPrint(filepath.Join(codegenDir, boilerplate), buf.Bytes(), defaultFileMode); err != nil { + if err := renderWriteFile(filepath.Join(codegenDir, boilerplate), "codegen/boilerplate.go.txt", boilerplateTmpl, bTd); err != nil { return err } - buf = &bytes.Buffer{} ugTd := tmplData{ RepoPath: repoPath, APIDirName: apiDirName, Version: version, } - if err := renderFile(buf, "codegen/update-generated.sh", updateGeneratedTmpl, ugTd); err != nil { - return err - } - return writeFileAndPrint(filepath.Join(codegenDir, updateGenerated), buf.Bytes(), defaultExecFileMode) + return renderWriteFile(filepath.Join(codegenDir, updateGenerated), "codegen/update-generated.sh", updateGeneratedTmpl, ugTd) } func (g *Generator) renderPkg() error { @@ -444,45 +384,32 @@ func (g *Generator) renderPkg() error { } func renderAPIFiles(apiDir, groupName, version, kind string) error { - buf := &bytes.Buffer{} adTd := tmplData{ GroupName: groupName, Version: version, } - if err := renderFile(buf, "apis///doc.go", apiDocTmpl, adTd); err != nil { - return err - } - if err := writeFileAndPrint(filepath.Join(apiDir, doc), buf.Bytes(), defaultFileMode); err != nil { + if err := renderWriteFile(filepath.Join(apiDir, doc), "apis///doc.go", apiDocTmpl, adTd); err != nil { return err } - buf = &bytes.Buffer{} arTd := tmplData{ Kind: kind, KindPlural: toPlural(strings.ToLower(kind)), GroupName: groupName, Version: version, } - if err := renderFile(buf, "apis///register.go", apiRegisterTmpl, arTd); err != nil { - return err - } - if err := writeFileAndPrint(filepath.Join(apiDir, register), buf.Bytes(), defaultFileMode); err != nil { + if err := renderWriteFile(filepath.Join(apiDir, register), "apis///register.go", apiRegisterTmpl, arTd); err != nil { return err } - buf = &bytes.Buffer{} atTd := tmplData{ Kind: kind, Version: version, } - if err := renderFile(buf, "apis///types.go", apiTypesTmpl, atTd); err != nil { - return err - } - return writeFileAndPrint(filepath.Join(apiDir, types), buf.Bytes(), defaultFileMode) + return renderWriteFile(filepath.Join(apiDir, types), "apis///types.go", apiTypesTmpl, atTd) } func renderStubFiles(stubDir, repoPath, kind, apiDirName, version string) error { - buf := &bytes.Buffer{} td := tmplData{ OperatorSDKImport: sdkImport, RepoPath: repoPath, @@ -490,10 +417,7 @@ func renderStubFiles(stubDir, repoPath, kind, apiDirName, version string) error APIDirName: apiDirName, Version: version, } - if err := renderFile(buf, "stub/handler.go", handlerTmpl, td); err != nil { - return err - } - return writeFileAndPrint(filepath.Join(stubDir, handler), buf.Bytes(), defaultFileMode) + return renderWriteFile(filepath.Join(stubDir, handler), "stub/handler.go", handlerTmpl, td) } type tmplData struct { From 518b633f8366534645beaed0fc22bdc4c8aed3e1 Mon Sep 17 00:00:00 2001 From: Ish Shah Date: Thu, 14 Jun 2018 12:56:08 -0700 Subject: [PATCH 4/4] Fix executable file generation --- pkg/generator/generator.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go index a75486a86a..4bd9aaa63e 100644 --- a/pkg/generator/generator.go +++ b/pkg/generator/generator.go @@ -324,16 +324,20 @@ func (g *Generator) renderVersion() error { } func renderBuildFiles(buildDir, repoPath, projectName string) error { + buf := &bytes.Buffer{} bTd := tmplData{ ProjectName: projectName, RepoPath: repoPath, } - if err := renderWriteFile(filepath.Join(buildDir, build), "tmp/build/build.sh", buildTmpl, bTd); err != nil { + if err := renderFile(buf, "tmp/build/build.sh", buildTmpl, bTd); err != nil { + return err + } + if err := writeFileAndPrint(filepath.Join(buildDir, build), buf.Bytes(), defaultExecFileMode); err != nil { return err } - buf := &bytes.Buffer{} + buf = &bytes.Buffer{} if err := renderDockerBuildFile(buf); err != nil { return err } @@ -363,12 +367,16 @@ func renderCodegenFiles(codegenDir, repoPath, apiDirName, version, projectName s return err } + buf := &bytes.Buffer{} ugTd := tmplData{ RepoPath: repoPath, APIDirName: apiDirName, Version: version, } - return renderWriteFile(filepath.Join(codegenDir, updateGenerated), "codegen/update-generated.sh", updateGeneratedTmpl, ugTd) + if err := renderFile(buf, "codegen/update-generated.sh", updateGeneratedTmpl, ugTd); err != nil { + return err + } + return writeFileAndPrint(filepath.Join(codegenDir, updateGenerated), buf.Bytes(), defaultExecFileMode) } func (g *Generator) renderPkg() error {