hack: move common "verify generated" shell code into function

Several verify scripts used the same pattern of "check for clean working tree,
generated files, check for diffs". The code for that is now in
kube::verify::generated, defined in hack/lib/verify-generated.sh, and those
scripts just source that.
This commit is contained in:
Patrick Ohly
2023-06-21 09:50:23 +02:00
parent aa8cb97f65
commit 6a16c076e7
5 changed files with 78 additions and 98 deletions

View File

@@ -14,39 +14,16 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# This script verifies whether code update is needed or not against the
# specific sub-projects. The sub-projects are listed below this script(the
# line that starts with `CODEGEN_PKG`).
# Usage: `hack/verify-codegen.sh`.
# This script verifies whether a code update is needed.
# Usage: `hack/verify-codegen.sh <parameters for update-codegen.sh>`.
set -o errexit
set -o nounset
set -o pipefail
KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
source "${KUBE_ROOT}/hack/lib/init.sh"
source "${KUBE_ROOT}/hack/lib/verify-generated.sh"
kube::util::ensure_clean_working_dir
# This sets up the environment, like GOCACHE, which keeps the worktree cleaner.
kube::golang::setup_env
_tmpdir="$(kube::realpath "$(mktemp -d -t "$(basename "$0").XXXXXX")")"
git worktree add -f -q "${_tmpdir}" HEAD
kube::util::trap_add "git worktree remove -f ${_tmpdir}" EXIT
cd "${_tmpdir}"
# Update generated code
export UPDATE_API_KNOWN_VIOLATIONS=true
hack/update-codegen.sh "$@"
# Test for diffs
diffs=$(git status --porcelain | wc -l)
if [[ ${diffs} -gt 0 ]]; then
git status >&2
git diff >&2
echo "Generated files need to be updated" >&2
echo "Please run 'hack/update-codegen.sh'" >&2
exit 1
fi
echo "Generated files are up to date"
kube::verify::generated "Generated files need to be updated" "Please run 'hack/update-codegen.sh'" hack/update-codegen.sh "$@"