crossplane
84 строки · 4.9 Кб
1//go:build generate
2// +build generate
3
4/*
5Copyright 2019 The Crossplane Authors.
6
7Licensed under the Apache License, Version 2.0 (the "License");
8you may not use this file except in compliance with the License.
9You may obtain a copy of the License at
10
11http://www.apache.org/licenses/LICENSE-2.0
12
13Unless required by applicable law or agreed to in writing, software
14distributed under the License is distributed on an "AS IS" BASIS,
15WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16See the License for the specific language governing permissions and
17limitations under the License.
18*/
19
20// NOTE(negz): See the below link for details on what is happening here.
21// https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module
22
23// Remove existing manifests
24//go:generate rm -rf ../cluster/crds
25//go:generate rm -rf ../cluster/webhookconfigurations/manifests.yaml
26
27// Replicate identical API versions
28
29//go:generate ../hack/duplicate_api_type.sh apiextensions/v1/composition_revision_types.go apiextensions/v1beta1
30//go:generate ../hack/duplicate_api_type.sh apiextensions/v1/composition_common.go apiextensions/v1beta1
31//go:generate ../hack/duplicate_api_type.sh apiextensions/v1/composition_patches.go apiextensions/v1beta1
32//go:generate ../hack/duplicate_api_type.sh apiextensions/v1/composition_transforms.go apiextensions/v1beta1
33//go:generate ../hack/duplicate_api_type.sh apiextensions/v1/composition_environment.go apiextensions/v1beta1
34
35//go:generate ../hack/duplicate_api_type.sh pkg/meta/v1/configuration_types.go pkg/meta/v1alpha1
36//go:generate ../hack/duplicate_api_type.sh pkg/meta/v1/provider_types.go pkg/meta/v1alpha1
37//go:generate ../hack/duplicate_api_type.sh pkg/meta/v1/meta.go pkg/meta/v1alpha1
38//go:generate ../hack/duplicate_api_type.sh pkg/meta/v1/meta.go pkg/meta/v1beta1
39
40// NOTE(negz): We generate deepcopy methods and CRDs for each API group
41// separately because there seems to be an undiagnosed bug in controller-runtime
42// that causes some kubebuilder annotations to be ignored when we try to
43// generate them all together in one command.
44
45// Generate deepcopy methodsets and CRD manifests
46//go:generate go run -tags generate sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile=../hack/boilerplate.go.txt paths=./pkg/v1alpha1;./pkg/v1beta1;./pkg/v1 crd:crdVersions=v1,generateEmbeddedObjectMeta=true output:artifacts:config=../cluster/crds
47//go:generate go run -tags generate sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile=../hack/boilerplate.go.txt paths=./apiextensions/v1alpha1;./apiextensions/v1beta1;./apiextensions/v1 crd:crdVersions=v1 output:artifacts:config=../cluster/crds
48//go:generate go run -tags generate sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile=../hack/boilerplate.go.txt paths=./secrets/... crd:crdVersions=v1 output:artifacts:config=../cluster/crds
49
50// We generate the meta.pkg.crossplane.io types separately as the generated CRDs
51// are never installed, only used for API documentation.
52//go:generate go run -tags generate sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile=../hack/boilerplate.go.txt paths=./pkg/meta/... crd:crdVersions=v1 output:artifacts:config=../cluster/meta
53
54// Generate webhook manifests
55//go:generate go run -tags generate sigs.k8s.io/controller-tools/cmd/controller-gen webhook paths=./pkg/v1alpha1;./pkg/v1beta1;./pkg/v1;./apiextensions/v1alpha1;./apiextensions/v1beta1;./apiextensions/v1 output:artifacts:config=../cluster/webhookconfigurations
56
57// Generate conversion code
58//go:generate go run -tags generate github.com/jmattheis/goverter/cmd/goverter gen -build-tags="" ./apiextensions/v1
59//go:generate go run -tags generate github.com/jmattheis/goverter/cmd/goverter gen -build-tags="" ./pkg/meta/v1alpha1
60
61// Generate gRPC types and stubs.
62//
63// We use buf rather than the traditional protoc because it's pure go and can
64// thus be invoked using go run from a pinned dependency. If we used protoc we'd
65// need to install it via the Makefile, and there are not currently statically
66// compiled binaries available for download (the release binaries for Linux are
67// dynamically linked). See buf.gen.yaml for buf's configuration.
68//
69// We go install the required plugins because they need to be in $PATH for buf
70// (or protoc) to invoke them.
71
72//go:generate go install google.golang.org/protobuf/cmd/protoc-gen-go google.golang.org/grpc/cmd/protoc-gen-go-grpc
73//go:generate go run github.com/bufbuild/buf/cmd/buf generate
74
75package apis76
77import (78_ "github.com/bufbuild/buf/cmd/buf" //nolint:typecheck79_ "github.com/jmattheis/goverter/cmd/goverter" //nolint:typecheck80_ "google.golang.org/grpc/cmd/protoc-gen-go-grpc" //nolint:typecheck81_ "google.golang.org/protobuf/cmd/protoc-gen-go" //nolint:typecheck82_ "k8s.io/code-generator" //nolint:typecheck83_ "sigs.k8s.io/controller-tools/cmd/controller-gen" //nolint:typecheck84)
85