From 34368ec2aaa4362a1f850cc1610d0a17e60d37b5 Mon Sep 17 00:00:00 2001 From: Caleb Cartwright Date: Mon, 10 May 2021 21:29:48 -0500 Subject: [PATCH] ci(should-skip-this): only check commits when skip rule enabled --- src/ci/scripts/should-skip-this.sh | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/ci/scripts/should-skip-this.sh b/src/ci/scripts/should-skip-this.sh index ebe4a31dd89b4..631a7b247d5e8 100755 --- a/src/ci/scripts/should-skip-this.sh +++ b/src/ci/scripts/should-skip-this.sh @@ -6,23 +6,27 @@ set -euo pipefail IFS=$'\n\t' +source "$(cd "$(dirname "$0")" && pwd)/../shared.sh" + +if [[ -z "${CI_ONLY_WHEN_SUBMODULES_CHANGED+x}" ]]; then + echo "Executing the job since there is no skip rule in effect" + exit 0 +fi + git fetch "https://github.com/$GITHUB_REPOSITORY" "$GITHUB_BASE_REF" BASE_COMMIT="$(git merge-base FETCH_HEAD HEAD)" echo "Searching for toolstate changes between $BASE_COMMIT and $(git rev-parse HEAD)" -source "$(cd "$(dirname "$0")" && pwd)/../shared.sh" -if [[ -z "${CI_ONLY_WHEN_SUBMODULES_CHANGED+x}" ]]; then - echo "Executing the job since there is no skip rule in effect" -elif git diff "$BASE_COMMIT" | grep --quiet "^index .* 160000"; then +if git diff "$BASE_COMMIT" | grep --quiet "^index .* 160000"; then # Submodules pseudo-files inside git have the 160000 permissions, so when # those files are present in the diff a submodule was updated. echo "Executing the job since submodules are updated" -elif git diff --name-only "$BASE_COMMIT" | grep --quiet src/tools/'\(clippy\|rustfmt\)'; then +elif ! git diff --quiet "$BASE_COMMIT" -- src/tools/clippy src/tools/rustfmt; then # There is not an easy blanket search for subtrees. For now, manually list - # clippy. + # the subtrees. echo "Executing the job since clippy or rustfmt subtree was updated" else - echo "Not executing this job since no submodules were updated" + echo "Not executing this job since no submodules nor subtrees were updated" ciCommandSetEnv SKIP_JOB 1 fi