diff --git a/hack/update-all-staging.sh b/hack/update-all-staging.sh new file mode 100755 index 0000000000..cf870b3f78 --- /dev/null +++ b/hack/update-all-staging.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +# Copyright 2017 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. + +# A single script that runs a predefined set of update-* scripts, as they often go together. +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. +source "${KUBE_ROOT}/cluster/lib/util.sh" +source "${KUBE_ROOT}/hack/lib/util.sh" + +SILENT=true +ALL=false + +while getopts ":va" opt; do + case $opt in + a) + ALL=true + ;; + v) + SILENT=false + ;; + \?) + echo "Invalid flag: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +trap 'exit 1' SIGINT + +if $SILENT ; then + echo "Running in the silent mode, run with -v if you want to see script logs." +fi + +if ! $ALL ; then + echo "Running in short-circuit mode; run with -a to force all scripts to run." +fi + +kube::util::ensure_clean_working_dir +kube::util::ensure_godep_version v74 + +if ! kube::util::godep_restored 2>&1 | sed 's/^/ /'; then + echo "Running godep restore" + godep restore +fi + +BASH_TARGETS=" + staging-client-go + staging-godeps + bazel" + +for t in $BASH_TARGETS +do + echo -e "${color_yellow}Updating $t${color_norm}" + if $SILENT ; then + if ! bash "$KUBE_ROOT/hack/update-$t.sh" 1> /dev/null; then + echo -e "${color_red}Updating $t FAILED${color_norm}" + if ! $ALL; then + exit 1 + fi + fi + else + if ! bash "$KUBE_ROOT/hack/update-$t.sh"; then + echo -e "${color_red}Updating $t FAILED${color_norm}" + if ! $ALL; then + exit 1 + fi + fi + fi +done + +echo -e "${color_green}Update scripts completed successfully${color_norm}" diff --git a/hack/update-all.sh b/hack/update-all.sh index fe6329f589..e3ecccef52 100755 --- a/hack/update-all.sh +++ b/hack/update-all.sh @@ -51,32 +51,38 @@ if ! $ALL ; then fi BASH_TARGETS=" - generated-protobuf - codegen - codecgen - generated-docs - generated-swagger-docs - swagger-spec - openapi-spec - api-reference-docs - staging-client-go - staging-godeps - bazel - federation-openapi-spec" + update-generated-protobuf + update-codegen + update-codecgen + update-generated-docs + update-generated-swagger-docs + update-swagger-spec + update-openapi-spec + update-api-reference-docs + update-bazel + update-federation-openapi-spec + verify-staging-client-go + verify-staging-godeps" for t in $BASH_TARGETS do - echo -e "${color_yellow}Updating $t${color_norm}" + echo -e "${color_yellow}Running $t${color_norm}" if $SILENT ; then - if ! bash "$KUBE_ROOT/hack/update-$t.sh" 1> /dev/null; then - echo -e "${color_red}Updating $t FAILED${color_norm}" + if ! bash "$KUBE_ROOT/hack/$t.sh" 1> /dev/null; then + echo -e "${color_red}Running $t FAILED${color_norm}" + if [[ $t == "verify"* ]]; then + echo -e "${color_red}Run ./hack/update-all-staging.sh to fix it" + fi if ! $ALL; then exit 1 fi fi else - if ! bash "$KUBE_ROOT/hack/update-$t.sh"; then - echo -e "${color_red}Updating $t FAILED${color_norm}" + if ! bash "$KUBE_ROOT/hack/$t.sh"; then + echo -e "${color_red}Running $t FAILED${color_norm}" + if [[ $t == "verify"* ]]; then + echo -e "${color_red}Run ./hack/update-all-staging.sh to fix it" + fi if ! $ALL; then exit 1 fi