diff --git a/hack/lib/util.sh b/hack/lib/util.sh index dd3de6d49b8..5572bd833e8 100755 --- a/hack/lib/util.sh +++ b/hack/lib/util.sh @@ -453,12 +453,18 @@ kube::util::godep_restored() { return 0 } -# Exits script if working directory is dirty. +# Exits script if working directory is dirty. If it's run interactively in the terminal +# the user can commit changes in a second terminal. This script will wait. kube::util::ensure_clean_working_dir() { - if ! git diff --exit-code; then - echo -e "\nUnexpected dirty working directory." - exit 1 - fi + while ! git diff HEAD --exit-code &>/dev/null; do + echo -e "\nUnexpected dirty working directory:\n" + git status -s | sed 's/^/ /' + if ! tty -s; then + exit 1 + fi + echo -e "\nCommit your changes in another terminal and then continue here by pressing enter." + read + done 1>&2 } # Ensure that the given godep version is installed and in the path diff --git a/hack/update-all-staging.sh b/hack/update-all-staging.sh deleted file mode 100755 index cf870b3f78d..00000000000 --- a/hack/update-all-staging.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/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 e3ecccef52d..c35cddf8f56 100755 --- a/hack/update-all.sh +++ b/hack/update-all.sh @@ -59,10 +59,10 @@ BASH_TARGETS=" update-swagger-spec update-openapi-spec update-api-reference-docs - update-bazel update-federation-openapi-spec - verify-staging-client-go - verify-staging-godeps" + update-staging-client-go + update-staging-godeps + update-bazel" for t in $BASH_TARGETS do @@ -70,9 +70,6 @@ do if $SILENT ; then 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 @@ -80,9 +77,6 @@ do else 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 @@ -91,3 +85,4 @@ do done echo -e "${color_green}Update scripts completed successfully${color_norm}" + diff --git a/hack/update-staging-godeps.sh b/hack/update-staging-godeps.sh index 6a0e9e547f3..aad1c92803e 100755 --- a/hack/update-staging-godeps.sh +++ b/hack/update-staging-godeps.sh @@ -55,7 +55,6 @@ if ! kube::util::godep_restored 2>&1 | sed 's/^/ /'; then exit 1 fi -kube::util::ensure_clean_working_dir kube::util::ensure-temp-dir kube::util::ensure_godep_version v74 @@ -85,6 +84,8 @@ for repo in $(ls ${KUBE_ROOT}/staging/src/k8s.io); do continue fi + kube::util::ensure_clean_working_dir + cp -a "${KUBE_ROOT}/staging/src/k8s.io/${repo}" "${TMP_GOPATH}/src/k8s.io/" pushd "${TMP_GOPATH}/src/k8s.io/${repo}" >/dev/null