github.com/oam-dev/kubevela@v1.9.11/hack/apis/clientgen.sh (about)

     1  #!/bin/bash -l
     2  #
     3  # Copyright 2021. The KubeVela Authors.
     4  #
     5  # Licensed under the Apache License, Version 2.0 (the "License");
     6  # you may not use this file except in compliance with the License.
     7  # You may obtain a copy of the License at
     8  #
     9  #     http://www.apache.org/licenses/LICENSE-2.0
    10  #
    11  # Unless required by applicable law or agreed to in writing, software
    12  # distributed under the License is distributed on an "AS IS" BASIS,
    13  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  # See the License for the specific language governing permissions and
    15  # limitations under the License.
    16  #
    17  
    18  set -e
    19  
    20  cd "$(dirname "${BASH_SOURCE[0]}")/../.."
    21  
    22  WORK_TEMP_DIR="./clientgen_work_temp"
    23  
    24  # client generator parameters
    25  CODEGEN_GENERATORS="all" # deepcopy,defaulter,client,lister,informer or all
    26  OUTPUT_PACKAGE="github.com/oam-dev/kubevela/pkg/generated/client"
    27  APIS_PACKAGE="github.com/oam-dev/kubevela/apis"
    28  CODEGEN_GROUP_VERSIONS="core.oam.dev:v1beta1"
    29  OUTPUT_DIR="${WORK_TEMP_DIR}"
    30  BOILERPLATE_FILE="./hack/boilerplate.go.txt"
    31  
    32  installDep() {
    33    cp go.mod go.sum "${WORK_TEMP_DIR}/backup/"
    34  
    35    cat <<EOF >"${WORK_TEMP_DIR}/tools.go"
    36  // +build tools
    37  
    38  package tools
    39  
    40  import _ "k8s.io/code-generator"
    41  EOF
    42    go get github.com/oam-dev/kubevela/clientgen_work_temp
    43    go mod vendor
    44  }
    45  
    46  clientGen() {
    47    bash ./vendor/k8s.io/code-generator/generate-groups.sh "${CODEGEN_GENERATORS}" \
    48      ${OUTPUT_PACKAGE} \
    49      ${APIS_PACKAGE} \
    50      "${CODEGEN_GROUP_VERSIONS}" \
    51      --output-base "${OUTPUT_DIR}" \
    52      --go-header-file "${BOILERPLATE_FILE}"
    53  
    54    mkdir -p ./pkg/generated/
    55    mv "${WORK_TEMP_DIR}/github.com/oam-dev/kubevela/pkg/generated/client" ./pkg/generated/
    56  }
    57  
    58  cleanup() {
    59    mv "${WORK_TEMP_DIR}/backup/"* ./
    60    rm -drf "${WORK_TEMP_DIR}/"
    61    rm -drf vendor
    62  }
    63  
    64  main() {
    65    mkdir -p "${WORK_TEMP_DIR}/backup/"
    66    installDep
    67    clientGen
    68    cleanup
    69  }
    70  
    71  main