github.com/ironcore-dev/gardener-extension-provider-ironcore@v0.3.2-0.20240314231816-8336447fb9a0/hack/update-codegen.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  set -o errexit
     4  set -o nounset
     5  set -o pipefail
     6  
     7  BASE_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
     8  export TERM="xterm-256color"
     9  
    10  VGOPATH="$VGOPATH"
    11  DEEPCOPY_GEN="$DEEPCOPY_GEN"
    12  DEFAULTER_GEN="$DEFAULTER_GEN"
    13  CONVERSION_GEN="$CONVERSION_GEN"
    14  
    15  bold="$(tput bold)"
    16  blue="$(tput setaf 4)"
    17  normal="$(tput sgr0)"
    18  
    19  function qualify-gvs() {
    20    APIS_PKG="$1"
    21    GROUPS_WITH_VERSIONS="$2"
    22    join_char=""
    23    res=""
    24  
    25    for GVs in ${GROUPS_WITH_VERSIONS}; do
    26      IFS=: read -r G Vs <<<"${GVs}"
    27  
    28      for V in ${Vs//,/ }; do
    29        res="$res$join_char$APIS_PKG/$G/$V"
    30        join_char=","
    31      done
    32    done
    33  
    34    echo "$res"
    35  }
    36  
    37  function qualify-gs() {
    38    APIS_PKG="$1"
    39    unset GROUPS
    40    IFS=' ' read -ra GROUPS <<< "$2"
    41    join_char=""
    42    res=""
    43  
    44    for G in "${GROUPS[@]}"; do
    45      res="$res$join_char$APIS_PKG/$G"
    46      join_char=","
    47    done
    48  
    49    echo "$res"
    50  }
    51  
    52  # setup virtual GOPATH
    53  source "$GARDENER_HACK_DIR"/vgopath-setup.sh
    54  
    55  # We need to explicitly pass GO111MODULE=off to k8s.io/code-generator as it is significantly slower otherwise,
    56  # see https://github.com/kubernetes/code-generator/issues/100.
    57  export GO111MODULE=off
    58  
    59  echo "${bold}Public types${normal}"
    60  
    61  echo "Generating ${blue}deepcopy${normal}"
    62  "$DEEPCOPY_GEN" \
    63    --go-header-file "$BASE_DIR/boilerplate.go.txt" \
    64    --input-dirs "$(qualify-gvs "github.com/ironcore-dev/gardener-extension-provider-ironcore/pkg/apis" "config:v1alpha1 ironcore:v1alpha1")" \
    65    -O zz_generated.deepcopy
    66  
    67  echo "${bold}Internal types${normal}"
    68  
    69  echo "Generating ${blue}deepcopy${normal}"
    70  "$DEEPCOPY_GEN" \
    71    --go-header-file "$BASE_DIR/boilerplate.go.txt" \
    72    --input-dirs "$(qualify-gs "github.com/ironcore-dev/gardener-extension-provider-ironcore/pkg/apis" "config ironcore")" \
    73    -O zz_generated.deepcopy
    74  
    75  echo "Generating ${blue}defaulter${normal}"
    76  "$DEFAULTER_GEN" \
    77    --go-header-file "$BASE_DIR/boilerplate.go.txt" \
    78    --input-dirs "$(qualify-gvs "github.com/ironcore-dev/gardener-extension-provider-ironcore/pkg/apis" "config:v1alpha1 ironcore:v1alpha1")" \
    79    -O zz_generated.defaults
    80  
    81  echo "Generating ${blue}conversion${normal}"
    82  "$CONVERSION_GEN" \
    83    --go-header-file "$BASE_DIR/boilerplate.go.txt" \
    84    --input-dirs "$(qualify-gs "github.com/ironcore-dev/gardener-extension-provider-ironcore/pkg/apis" "config ironcore")" \
    85    --input-dirs "$(qualify-gvs "github.com/ironcore-dev/gardener-extension-provider-ironcore/pkg/apis" "config:v1alpha1 ironcore:v1alpha1")" \
    86    -O zz_generated.conversion