diff options
| author | gy95 <guoyao17@huawei.com> | 2022-03-10 20:23:33 +0800 |
|---|---|---|
| committer | gy95 <guoyao17@huawei.com> | 2022-03-11 16:11:19 +0800 |
| commit | d7e52d6c399c516a4130e0ddbbcdcd17e8caf4a5 (patch) | |
| tree | 0a5be321b69431477e1f8f82136bfbf40bee38d5 /hack/generate-groups.sh | |
| parent | Merge pull request #3665 from wackxu/fixprobe (diff) | |
| download | kubeedge-d7e52d6c399c516a4130e0ddbbcdcd17e8caf4a5.tar.gz | |
Move apis and client under kubeedge/cloud/pkg/ to kubeedge/pkg/
Signed-off-by: gy95 <guoyao17@huawei.com>
Diffstat (limited to 'hack/generate-groups.sh')
| -rwxr-xr-x | hack/generate-groups.sh | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/hack/generate-groups.sh b/hack/generate-groups.sh new file mode 100755 index 000000000..44e81f5fc --- /dev/null +++ b/hack/generate-groups.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash + +# 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 + +# generate-groups generates everything for a project with external types only, e.g. a project based +# on CustomResourceDefinitions. + +if [ "$#" -lt 4 ] || [ "${1}" == "--help" ]; then + cat <<EOF +Usage: $(basename "$0") <generators> <output-package> <apis-package> <groups-versions> ... + <generators> the generators comma separated to run (deepcopy,defaulter,client,lister,informer) or "all". + <output-package> the output package name (e.g. github.com/example/project/pkg/generated). + <apis-package> the external types dir (e.g. github.com/example/api or github.com/example/project/pkg/apis). + <groups-versions> the groups and their versions in the format "groupA:v1,v2 groupB:v1 groupC:v2", relative + to <api-package>. + ... arbitrary flags passed to all generator binaries. +Examples: + $(basename "$0") all github.com/example/project/pkg/client github.com/example/project/pkg/apis "foo:v1 bar:v1alpha1,v1beta1" + $(basename "$0") deepcopy,client github.com/example/project/pkg/client github.com/example/project/pkg/apis "foo:v1 bar:v1alpha1,v1beta1" +EOF + exit 0 +fi + +GENS="$1" +OUTPUT_PKG="$2" +APIS_PKG="$3" +GROUPS_WITH_VERSIONS="$4" +GOBIN="${GOBIN-$GOPATH/bin}" +shift 4 + +( + # To support running this script from anywhere, we have to first cd into this directory + # so we can install the tools. + cd "$(dirname "${0}")" + GO111MODULE=on GOFLAGS=-mod=vendor go install k8s.io/code-generator/cmd/{defaulter-gen,client-gen,lister-gen,informer-gen,deepcopy-gen} +) + +function codegen::join() { local IFS="$1"; shift; echo "$*"; } + +# enumerate group versions +FQ_APIS=() # e.g. k8s.io/api/apps/v1 +for GVs in ${GROUPS_WITH_VERSIONS}; do + IFS=: read -r G Vs <<<"${GVs}" + + # enumerate versions + for V in ${Vs//,/ }; do + FQ_APIS+=("${APIS_PKG}/${G}/${V}") + done +done + +if [ "${GENS}" = "all" ] || grep -qw "deepcopy" <<<"${GENS}"; then + echo "Generating deepcopy funcs" + "${GOBIN}/deepcopy-gen" --input-dirs "$(codegen::join , "${FQ_APIS[@]}")" -O zz_generated.deepcopy --bounding-dirs "${APIS_PKG}" "$@" +fi + +if [ "${GENS}" = "all" ] || grep -qw "client" <<<"${GENS}"; then + echo "Generating clientset for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}" + "${GOBIN}/client-gen" --clientset-name "${CLIENTSET_NAME_VERSIONED:-versioned}" --input-base "" --input "$(codegen::join , "${FQ_APIS[@]}")" --output-package "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}" "$@" +fi + +if [ "${GENS}" = "all" ] || grep -qw "lister" <<<"${GENS}"; then + echo "Generating listers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/listers" + "${GOBIN}/lister-gen" --input-dirs "$(codegen::join , "${FQ_APIS[@]}")" --output-package "${OUTPUT_PKG}/listers" "$@" +fi + +if [ "${GENS}" = "all" ] || grep -qw "informer" <<<"${GENS}"; then + echo "Generating informers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/informers" + "${GOBIN}/informer-gen" \ + --input-dirs "$(codegen::join , "${FQ_APIS[@]}")" \ + --versioned-clientset-package "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}/${CLIENTSET_NAME_VERSIONED:-versioned}" \ + --listers-package "${OUTPUT_PKG}/listers" \ + --output-package "${OUTPUT_PKG}/informers" \ + "$@" +fi |
