#!/usr/bin/env bash # Copyright 2020 VMware, Inc. # SPDX-License-Identifier: Apache-2.0 set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" KUBE_VERSIONS=("$@") GENERATED_DIR="${ROOT}/generated" BACKUP_DIR="${GENERATED_DIR}.bak" # Move the originally generated directory to a backup location mv "${GENERATED_DIR}" "${BACKUP_DIR}" mkdir "${GENERATED_DIR}" # At exit (even on error), copy it back cleanup() { rm -r "${GENERATED_DIR}" mv -f "${BACKUP_DIR}" "${GENERATED_DIR}" } trap "cleanup" EXIT SIGINT # Run the code generation into a new empty `./generated` directory. "${ROOT}/hack/lib/update-codegen.sh" "${KUBE_VERSIONS[@]}" # Diff each of the chosen Kubernetes versions (but avoid comparing any other versions). echo "diffing ${GENERATED_DIR} against freshly generated codegen" ret=0 for kubeVersion in "${KUBE_VERSIONS[@]}"; do kubeMinorVersion="$(echo "${kubeVersion}" | cut -d"." -f1-2)" generatedVersionDir="${GENERATED_DIR}/${kubeMinorVersion}" backupVersionDir="${BACKUP_DIR}/${kubeMinorVersion}" diff -Naupr "${generatedVersionDir}" "${backupVersionDir}" || ret=$? done # If any of the versions differed, exit nonzero with an error message. if [[ $ret -eq 0 ]] then echo "${GENERATED_DIR} up to date." else echo "${GENERATED_DIR} is out of date. Please run hack/update.sh" exit 1 fi