# 创建并进入项目目录 mkdir code-generator-demo && cd code-generator-demo
# 初始化项目 go mod init code-generator-demo
# 获取依赖 go get k8s.io/apimachinery@v0.0.0-20190425132440-17f84483f500 go get k8s.io/client-go@v0.0.0-20190425172711-65184652c889 go get k8s.io/code-generator@v0.0.0-20190419212335-ff26e7842f9d
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.
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. */
// This package imports things required by build scripts, to force `go mod` to see them as dependencies package tools
# Copyright 2017 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.
# 设置脚本在执行过程中遇到任何错误时立即退出 set -o errexit # 设置脚本在使用未定义的变量时立即退出 set -o nounset # 设置脚本在管道命令中任意一条命令失败时立即退出 set -o pipefail
# 调用脚本生成代码 $ cd hack && ./update-codegen.sh Generating deepcopy funcs Generating clientset for appcontroller:v1alpha1 at code-generator-demo/pkg/generated/clientset Generating listers for appcontroller:v1alpha1 at code-generator-demo/pkg/generated/listers Generating informers for appcontroller:v1alpha1 at code-generator-demo/pkg/generated/informers
// SchemeGroupVersion is group version used to register these objects var SchemeGroupVersion = schema.GroupVersion{Group: appcontroller.GroupName, Version: "v1alpha1"}
// Kind takes an unqualified kind and returns back a Group qualified GroupKind func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() }
// Resource takes an unqualified resource and returns a Group qualified GroupResource func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() }
var ( // SchemeBuilder initializes a scheme builder SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme is a global function that registers this API group & version to a scheme AddToScheme = SchemeBuilder.AddToScheme )
// Adds the list of known types to Scheme. func addKnownTypes(scheme *runtime.Scheme) error { scheme.AddKnownTypes(SchemeGroupVersion, &Application{}, &ApplicationList{}, ) metav1.AddToGroupVersion(scheme, SchemeGroupVersion) return nil }