about summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/ci/scripts/should-skip-this.sh18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/ci/scripts/should-skip-this.sh b/src/ci/scripts/should-skip-this.sh
index ebe4a31dd89..631a7b247d5 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