From 8fb72887f7ead34aa5441354c7d2d161093ef988 Mon Sep 17 00:00:00 2001 From: Bryce Palmer Date: Tue, 12 Apr 2022 10:24:18 -0400 Subject: [PATCH] add readme template to go/v3 scaffold templates Signed-off-by: Bryce Palmer --- pkg/plugins/golang/v3/scaffolds/init.go | 8 ++ .../v3/scaffolds/internal/templates/readme.go | 121 ++++++++++++++++++ testdata/project-v3-addon/README.md | 77 +++++++++++ testdata/project-v3-config/README.md | 77 +++++++++++ testdata/project-v3-multigroup/README.md | 77 +++++++++++ testdata/project-v3-v1beta1/README.md | 77 +++++++++++ testdata/project-v3/README.md | 77 +++++++++++ 7 files changed, 514 insertions(+) create mode 100644 pkg/plugins/golang/v3/scaffolds/internal/templates/readme.go create mode 100644 testdata/project-v3-addon/README.md create mode 100644 testdata/project-v3-config/README.md create mode 100644 testdata/project-v3-multigroup/README.md create mode 100644 testdata/project-v3-v1beta1/README.md create mode 100644 testdata/project-v3/README.md diff --git a/pkg/plugins/golang/v3/scaffolds/init.go b/pkg/plugins/golang/v3/scaffolds/init.go index 31970ed15c0..dea8a22ae07 100644 --- a/pkg/plugins/golang/v3/scaffolds/init.go +++ b/pkg/plugins/golang/v3/scaffolds/init.go @@ -18,6 +18,7 @@ package scaffolds import ( "fmt" + "strings" "github.com/spf13/afero" @@ -112,5 +113,12 @@ func (s *initScaffolder) Scaffold() error { }, &templates.Dockerfile{}, &templates.DockerIgnore{}, + &templates.Readme{ + BoilerplateMixin: machinery.BoilerplateMixin{ + Boilerplate: strings.Replace( + strings.Replace(string(boilerplate), "/*", "", 1), + "*/", "", 1), + }, + }, ) } diff --git a/pkg/plugins/golang/v3/scaffolds/internal/templates/readme.go b/pkg/plugins/golang/v3/scaffolds/internal/templates/readme.go new file mode 100644 index 00000000000..0aa3926fab9 --- /dev/null +++ b/pkg/plugins/golang/v3/scaffolds/internal/templates/readme.go @@ -0,0 +1,121 @@ +/* +Copyright 2022 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. +*/ + +package templates + +import "sigs.k8s.io/kubebuilder/v3/pkg/machinery" + +var _ machinery.Template = &Readme{} + +// Readme scaffolds a README.md file +type Readme struct { + machinery.TemplateMixin + machinery.BoilerplateMixin + machinery.ProjectNameMixin +} + +// SetTemplateDefaults implements file.Template +func (f *Readme) SetTemplateDefaults() error { + if f.Path == "" { + f.Path = "README.md" + } + + f.TemplateBody = readmeFileTemplate + + return nil +} + +//nolint:lll +const readmeFileTemplate = `# {{ .ProjectName }} +// TODO(user): Add simple overview of use/purpose + +## Description +// TODO(user): An in-depth paragraph about your project and overview of use + +## Getting Started +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster ` + "`kubectl cluster-info`" + ` shows). + +### Running on the cluster +1. Install Instances of Custom Resources: +` + + "\t```sh\n" + + "\tkubectl apply -f config/samples/\n" + + "\t```" + + ` +2. Build and push your image to the location specified by ` + "`IMG`" + `: +` + + "\t```sh\n" + + "\tmake docker-build docker-push IMG=/:tag\n" + + "\t```" + + ` +3. Deploy the controller to the cluster with the image specified by ` + "`IMG`" + `: +` + + "\t```sh\n" + + "\tmake deploy IMG=/project-name>:tag\n" + + "\t```" + + ` +### Uninstall CRDs +To delete the CRDs from the cluster: +` + + "\t```sh\n" + + "\tmake uninstall\n" + + "\t```" + + ` +### Undeploy controller +UnDeploy the controller to the cluster: +` + + "\t```sh\n" + + "\tmake undeploy\n" + + "\t```" + + ` + +## Contributing +// TODO(user): Add detailed information on how you would like others to contribute to this project + +### How it works +This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) + +It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) +which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster + +### Test It Out +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster ` + "`kubectl cluster-info`" + ` shows). + +1. Install the CRDs into the cluster: +` + + // Backticks can't be escaped within backticks so have to + // do this to get the backticks for Markdown code fences + "\t```sh\n" + + "\tmake install\n" + + "\t```" + + ` +2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): +` + + "\t```sh\n" + + "\tmake run\n" + + "\t```" + + ` +**NOTE:** You can also run this in one step by running: ` + "`make install run`" + ` + +**NOTE:** Run ` + "`make --help`" + ` for more information on all potential ` + "`make`" + ` targets + +More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + +## License +{{ .Boilerplate }} +` diff --git a/testdata/project-v3-addon/README.md b/testdata/project-v3-addon/README.md new file mode 100644 index 00000000000..c42dcda1990 --- /dev/null +++ b/testdata/project-v3-addon/README.md @@ -0,0 +1,77 @@ +# project-v3-addon +// TODO(user): Add simple overview of use/purpose + +## Description +// TODO(user): An in-depth paragraph about your project and overview of use + +## Getting Started +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +### Running on the cluster +1. Install Instances of Custom Resources: + ```sh + kubectl apply -f config/samples/ + ``` +2. Build and push your image to the location specified by `IMG`: + ```sh + make docker-build docker-push IMG=/:tag + ``` +3. Deploy the controller to the cluster with the image specified by `IMG`: + ```sh + make deploy IMG=/project-name>:tag + ``` +### Uninstall CRDs +To delete the CRDs from the cluster: + ```sh + make uninstall + ``` +### Undeploy controller +UnDeploy the controller to the cluster: + ```sh + make undeploy + ``` + +## Contributing +// TODO(user): Add detailed information on how you would like others to contribute to this project + +### How it works +This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) + +It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) +which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster + +### Test It Out +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +1. Install the CRDs into the cluster: + ```sh + make install + ``` +2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + ```sh + make run + ``` +**NOTE:** You can also run this in one step by running: `make install run` + +**NOTE:** Run `make --help` for more information on all potential `make` targets + +More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + +## License + +Copyright 2022 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. + diff --git a/testdata/project-v3-config/README.md b/testdata/project-v3-config/README.md new file mode 100644 index 00000000000..f3d656a8a78 --- /dev/null +++ b/testdata/project-v3-config/README.md @@ -0,0 +1,77 @@ +# project-v3-config +// TODO(user): Add simple overview of use/purpose + +## Description +// TODO(user): An in-depth paragraph about your project and overview of use + +## Getting Started +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +### Running on the cluster +1. Install Instances of Custom Resources: + ```sh + kubectl apply -f config/samples/ + ``` +2. Build and push your image to the location specified by `IMG`: + ```sh + make docker-build docker-push IMG=/:tag + ``` +3. Deploy the controller to the cluster with the image specified by `IMG`: + ```sh + make deploy IMG=/project-name>:tag + ``` +### Uninstall CRDs +To delete the CRDs from the cluster: + ```sh + make uninstall + ``` +### Undeploy controller +UnDeploy the controller to the cluster: + ```sh + make undeploy + ``` + +## Contributing +// TODO(user): Add detailed information on how you would like others to contribute to this project + +### How it works +This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) + +It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) +which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster + +### Test It Out +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +1. Install the CRDs into the cluster: + ```sh + make install + ``` +2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + ```sh + make run + ``` +**NOTE:** You can also run this in one step by running: `make install run` + +**NOTE:** Run `make --help` for more information on all potential `make` targets + +More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + +## License + +Copyright 2022 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. + diff --git a/testdata/project-v3-multigroup/README.md b/testdata/project-v3-multigroup/README.md new file mode 100644 index 00000000000..af85922d4a3 --- /dev/null +++ b/testdata/project-v3-multigroup/README.md @@ -0,0 +1,77 @@ +# project-v3-multigroup +// TODO(user): Add simple overview of use/purpose + +## Description +// TODO(user): An in-depth paragraph about your project and overview of use + +## Getting Started +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +### Running on the cluster +1. Install Instances of Custom Resources: + ```sh + kubectl apply -f config/samples/ + ``` +2. Build and push your image to the location specified by `IMG`: + ```sh + make docker-build docker-push IMG=/:tag + ``` +3. Deploy the controller to the cluster with the image specified by `IMG`: + ```sh + make deploy IMG=/project-name>:tag + ``` +### Uninstall CRDs +To delete the CRDs from the cluster: + ```sh + make uninstall + ``` +### Undeploy controller +UnDeploy the controller to the cluster: + ```sh + make undeploy + ``` + +## Contributing +// TODO(user): Add detailed information on how you would like others to contribute to this project + +### How it works +This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) + +It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) +which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster + +### Test It Out +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +1. Install the CRDs into the cluster: + ```sh + make install + ``` +2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + ```sh + make run + ``` +**NOTE:** You can also run this in one step by running: `make install run` + +**NOTE:** Run `make --help` for more information on all potential `make` targets + +More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + +## License + +Copyright 2022 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. + diff --git a/testdata/project-v3-v1beta1/README.md b/testdata/project-v3-v1beta1/README.md new file mode 100644 index 00000000000..2eac42a7d04 --- /dev/null +++ b/testdata/project-v3-v1beta1/README.md @@ -0,0 +1,77 @@ +# project-v3-v1beta1 +// TODO(user): Add simple overview of use/purpose + +## Description +// TODO(user): An in-depth paragraph about your project and overview of use + +## Getting Started +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +### Running on the cluster +1. Install Instances of Custom Resources: + ```sh + kubectl apply -f config/samples/ + ``` +2. Build and push your image to the location specified by `IMG`: + ```sh + make docker-build docker-push IMG=/:tag + ``` +3. Deploy the controller to the cluster with the image specified by `IMG`: + ```sh + make deploy IMG=/project-name>:tag + ``` +### Uninstall CRDs +To delete the CRDs from the cluster: + ```sh + make uninstall + ``` +### Undeploy controller +UnDeploy the controller to the cluster: + ```sh + make undeploy + ``` + +## Contributing +// TODO(user): Add detailed information on how you would like others to contribute to this project + +### How it works +This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) + +It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) +which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster + +### Test It Out +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +1. Install the CRDs into the cluster: + ```sh + make install + ``` +2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + ```sh + make run + ``` +**NOTE:** You can also run this in one step by running: `make install run` + +**NOTE:** Run `make --help` for more information on all potential `make` targets + +More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + +## License + +Copyright 2022 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. + diff --git a/testdata/project-v3/README.md b/testdata/project-v3/README.md new file mode 100644 index 00000000000..bc07f0b10a4 --- /dev/null +++ b/testdata/project-v3/README.md @@ -0,0 +1,77 @@ +# project-v3 +// TODO(user): Add simple overview of use/purpose + +## Description +// TODO(user): An in-depth paragraph about your project and overview of use + +## Getting Started +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +### Running on the cluster +1. Install Instances of Custom Resources: + ```sh + kubectl apply -f config/samples/ + ``` +2. Build and push your image to the location specified by `IMG`: + ```sh + make docker-build docker-push IMG=/:tag + ``` +3. Deploy the controller to the cluster with the image specified by `IMG`: + ```sh + make deploy IMG=/project-name>:tag + ``` +### Uninstall CRDs +To delete the CRDs from the cluster: + ```sh + make uninstall + ``` +### Undeploy controller +UnDeploy the controller to the cluster: + ```sh + make undeploy + ``` + +## Contributing +// TODO(user): Add detailed information on how you would like others to contribute to this project + +### How it works +This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) + +It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) +which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster + +### Test It Out +You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. +**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + +1. Install the CRDs into the cluster: + ```sh + make install + ``` +2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + ```sh + make run + ``` +**NOTE:** You can also run this in one step by running: `make install run` + +**NOTE:** Run `make --help` for more information on all potential `make` targets + +More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + +## License + +Copyright 2022 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. +