From a181563afaa1efcb20f4a0f659f6040f71320765 Mon Sep 17 00:00:00 2001 From: Avesh Agarwal Date: Sat, 5 Aug 2017 09:35:13 -0400 Subject: [PATCH] Add update-codecgen.sh to generate type.generated.go files. --- hack/update-codecgen.sh | 151 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100755 hack/update-codecgen.sh diff --git a/hack/update-codecgen.sh b/hack/update-codecgen.sh new file mode 100755 index 000000000..226719245 --- /dev/null +++ b/hack/update-codecgen.sh @@ -0,0 +1,151 @@ +#!/bin/bash + +# Copyright 2015 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. + +# The sort at the end makes sure we feed the topological sort a deterministic +# list (since there aren't many dependencies). + +generated_files=($( + find . -not \( \ + \( \ + -wholename './output' \ + -o -wholename './_output' \ + -o -wholename './staging' \ + -o -wholename './release' \ + -o -wholename './target' \ + -o -wholename '*/third_party/*' \ + -o -wholename '*/vendor/*' \ + -o -wholename '*/codecgen-*-1234.generated.go' \ + \) -prune \ + \) -name '*.generated.go' | LC_ALL=C sort -r +)) + +# We only work for deps within this prefix. +#my_prefix="k8s.io/kubernetes" +my_prefix="github.com/aveshagarwal/rescheduler" + +# Register function to be called on EXIT to remove codecgen +# binary and also to touch the files that should be regenerated +# since they are first removed. +# This is necessary to make the script work after previous failure. +function cleanup { + rm -f "${CODECGEN:-}" + pushd "${KUBE_ROOT}" > /dev/null + for (( i=0; i < number; i++ )); do + touch "${generated_files[${i}]}" || true + done + popd > /dev/null +} +trap cleanup EXIT + +# Precompute dependencies for all directories. +# Then sort all files in the dependency order. +number=${#generated_files[@]} +result="" +for (( i=0; i /dev/null + base_file=$(basename "${file}") + base_generated_file=$(basename "${generated_file}") + # We use '-d 1234' flag to have a deterministic output every time. + # The constant was just randomly chosen. + ###echo "DBG: running ${CODECGEN} -d 1234 -o ${base_generated_file} ${base_file}" + ${CODECGEN} -d 1234 -o "${base_generated_file}" "${base_file}" + # Add boilerplate at the beginning of the generated file. + sed 's/YEAR/2017/' "${initial_dir}/hack/boilerplate/boilerplate.go.txt" > "${base_generated_file}.tmp" + cat "${base_generated_file}" >> "${base_generated_file}.tmp" + mv "${base_generated_file}.tmp" "${base_generated_file}" + popd > /dev/null +done