sigs.k8s.io/gateway-api@v1.0.0/hack/update-codegen.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  # Copyright 2020 The Kubernetes 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  set -o errexit
    18  set -o nounset
    19  set -o pipefail
    20  
    21  readonly SCRIPT_ROOT="$(cd "$(dirname "${BASH_SOURCE}")"/.. && pwd)"
    22  
    23  # Keep outer module cache so we don't need to redownload them each time.
    24  # The build cache already is persisted.
    25  readonly GOMODCACHE="$(go env GOMODCACHE)"
    26  readonly GO111MODULE="on"
    27  readonly GOFLAGS="-mod=readonly"
    28  readonly GOPATH="$(mktemp -d)"
    29  readonly MIN_REQUIRED_GO_VER="$(go list -m -f '{{.GoVersion}}')"
    30  
    31  function go_version_matches {
    32    go version | perl -ne "exit 1 unless m{go version go([0-9]+.[0-9]+)}; exit 1 if (\$1 < ${MIN_REQUIRED_GO_VER})"
    33    return $?
    34  }
    35  
    36  if ! go_version_matches; then
    37    echo "Go v${MIN_REQUIRED_GO_VER} or later is required to run code generation"
    38    exit 1
    39  fi
    40  
    41  export GOMODCACHE GO111MODULE GOFLAGS GOPATH
    42  
    43  # Even when modules are enabled, the code-generator tools always write to
    44  # a traditional GOPATH directory, so fake on up to point to the current
    45  # workspace.
    46  mkdir -p "$GOPATH/src/sigs.k8s.io"
    47  ln -s "${SCRIPT_ROOT}" "$GOPATH/src/sigs.k8s.io/gateway-api"
    48  
    49  readonly OUTPUT_PKG=sigs.k8s.io/gateway-api/pkg/client
    50  readonly APIS_PKG=sigs.k8s.io/gateway-api
    51  readonly CLIENTSET_NAME=versioned
    52  readonly CLIENTSET_PKG_NAME=clientset
    53  
    54  if [[ "${VERIFY_CODEGEN:-}" == "true" ]]; then
    55    echo "Running in verification mode"
    56    readonly VERIFY_FLAG="--verify-only"
    57  fi
    58  
    59  readonly COMMON_FLAGS="${VERIFY_FLAG:-} --go-header-file ${SCRIPT_ROOT}/hack/boilerplate/boilerplate.generatego.txt"
    60  
    61  echo "Generating CRDs"
    62  go run ./pkg/generator
    63  
    64  echo "Generating clientset at ${OUTPUT_PKG}/${CLIENTSET_PKG_NAME}"
    65  go run k8s.io/code-generator/cmd/client-gen \
    66    --clientset-name "${CLIENTSET_NAME}" \
    67    --input-base "" \
    68    --input "${APIS_PKG}/apis/v1alpha2,${APIS_PKG}/apis/v1beta1,${APIS_PKG}/apis/v1" \
    69    --output-package "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME}" \
    70    ${COMMON_FLAGS}
    71  
    72  echo "Generating listers at ${OUTPUT_PKG}/listers"
    73  go run k8s.io/code-generator/cmd/lister-gen \
    74    --input-dirs "${APIS_PKG}/apis/v1alpha2,${APIS_PKG}/apis/v1beta1,${APIS_PKG}/apis/v1" \
    75    --output-package "${OUTPUT_PKG}/listers" \
    76    ${COMMON_FLAGS}
    77  
    78  echo "Generating informers at ${OUTPUT_PKG}/informers"
    79  go run k8s.io/code-generator/cmd/informer-gen \
    80    --input-dirs "${APIS_PKG}/apis/v1alpha2,${APIS_PKG}/apis/v1beta1,${APIS_PKG}/apis/v1" \
    81    --versioned-clientset-package "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME}/${CLIENTSET_NAME}" \
    82    --listers-package "${OUTPUT_PKG}/listers" \
    83    --output-package "${OUTPUT_PKG}/informers" \
    84    ${COMMON_FLAGS}
    85  
    86  for VERSION in v1alpha2 v1beta1 v1
    87  do
    88    echo "Generating ${VERSION} register at ${APIS_PKG}/apis/${VERSION}"
    89    go run k8s.io/code-generator/cmd/register-gen \
    90      --input-dirs "${APIS_PKG}/apis/${VERSION}" \
    91      --output-package "${APIS_PKG}/apis/${VERSION}" \
    92      ${COMMON_FLAGS}
    93  
    94    echo "Generating ${VERSION} deepcopy at ${APIS_PKG}/apis/${VERSION}"
    95    go run sigs.k8s.io/controller-tools/cmd/controller-gen \
    96      object:headerFile=${SCRIPT_ROOT}/hack/boilerplate/boilerplate.generatego.txt \
    97      paths="${APIS_PKG}/apis/${VERSION}"
    98  
    99  done