From ca3469c468c6cecc2a2a324ffa1af0d2709b266f Mon Sep 17 00:00:00 2001 From: fanmin shi Date: Thu, 22 Feb 2018 15:35:42 -0800 Subject: [PATCH 1/2] pkg:generator: add codegen templates --- pkg/generator/codegen_tmpls.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 pkg/generator/codegen_tmpls.go diff --git a/pkg/generator/codegen_tmpls.go b/pkg/generator/codegen_tmpls.go new file mode 100644 index 0000000000..b5c9589bb2 --- /dev/null +++ b/pkg/generator/codegen_tmpls.go @@ -0,0 +1,31 @@ +package generator + +const boilerplateTmpl = `/* +Copyright YEAR The {{.ProjectName}} Authors + +Commercial software license. +*/ +` + +const updateGeneratedTmpl = `#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +DOCKER_REPO_ROOT="/go/src/{{.RepoPath}}" +IMAGE=${IMAGE:-"gcr.io/coreos-k8s-scale-testing/codegen"} + +docker run --rm \ + -v "$PWD":"$DOCKER_REPO_ROOT" \ + -w "$DOCKER_REPO_ROOT" \ + "$IMAGE" \ + "/go/src/k8s.io/code-generator/generate-groups.sh" \ + "all" \ + "{{.RepoPath}}/pkg/generated" \ + "{{.RepoPath}}/pkg/apis" \ + "{{.APIDirName}}:{{.Version}}" \ + --go-header-file "./hack/codegen/boilerplate.go.txt" \ + $@ +. +` From 193cdd3f0e4fa951c7474008a442dc8b743141c2 Mon Sep 17 00:00:00 2001 From: fanmin shi Date: Thu, 22 Feb 2018 15:36:06 -0800 Subject: [PATCH 2/2] pkg/generator: add auto-gen for codegen scripts --- pkg/generator/gen_codegen.go | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 pkg/generator/gen_codegen.go diff --git a/pkg/generator/gen_codegen.go b/pkg/generator/gen_codegen.go new file mode 100644 index 0000000000..88878b58ab --- /dev/null +++ b/pkg/generator/gen_codegen.go @@ -0,0 +1,48 @@ +package generator + +import ( + "io" + "text/template" +) + +// Boilerplate contains all the customized data needed to generate codegen/boilerplate.go.txt +// for a new operator when pairing with boilerplateTmpl template. +type Boilerplate struct { + ProjectName string +} + +// UpdateGenerated contains all the customized data needed to generate codegen/update-generated.sh +// for a new operator when pairing with updateGeneratedTmpl template. +type UpdateGenerated struct { + RepoPath string + APIDirName string + Version string +} + +func renderBoilerplateFile(w io.Writer, projectName string) error { + t := template.New("codegen/boilerplate.go.txt") + t, err := t.Parse(boilerplateTmpl) + if err != nil { + return err + } + + b := Boilerplate{ + ProjectName: projectName, + } + return t.Execute(w, b) +} + +func renderUpdateGeneratedFile(w io.Writer, repo, apiDirName, version string) error { + t := template.New("codegen/boilerplate.go.txt") + t, err := t.Parse(updateGeneratedTmpl) + if err != nil { + return err + } + + b := UpdateGenerated{ + RepoPath: repo, + APIDirName: apiDirName, + Version: version, + } + return t.Execute(w, b) +}