@@ -8,31 +8,43 @@ IFS=$'\n\t'
88
99source  " $( cd " $( dirname " $0 " ) "   &&  pwd)  /../shared.sh" 
1010
11- if  [[ -z  " ${CI_ONLY_WHEN_SUBMODULES_CHANGED+x} "   ]];  then 
12-     echo  " Executing the job since there is no skip rule in effect" 
13-     exit  0
11+ if  [[ -n  " ${CI_ONLY_WHEN_SUBMODULES_CHANGED-} "   ]];  then 
12+     git fetch " https://github.com/$GITHUB_REPOSITORY "   " $GITHUB_BASE_REF " 
13+     BASE_COMMIT=" $( git merge-base FETCH_HEAD HEAD) " 
14+ 
15+     echo  " Searching for toolstate changes between $BASE_COMMIT  and $( git rev-parse HEAD) " 
16+ 
17+     if  git diff " $BASE_COMMIT "   |  grep --quiet " ^index .* 160000" ;  then 
18+         #  Submodules pseudo-files inside git have the 160000 permissions, so when
19+         #  those files are present in the diff a submodule was updated.
20+         echo  " Submodules were updated" 
21+     elif  !  git diff --quiet " $BASE_COMMIT "   -- src/tools/clippy src/tools/rustfmt;  then 
22+         #  There is not an easy blanket search for subtrees. For now, manually list
23+         #  the subtrees.
24+         echo  " Clippy or rustfmt subtrees were updated" 
25+     elif  !  (git diff --quiet " $BASE_COMMIT "   -- \
26+              src/test/rustdoc-gui \
27+              src/librustdoc \
28+              src/tools/rustdoc-gui);  then 
29+         #  There was a change in either rustdoc or in its GUI tests.
30+         echo  " Rustdoc was updated" 
31+     else 
32+         echo  " Not executing this job since no submodules nor subtrees were updated" 
33+         ciCommandSetEnv SKIP_JOB 1
34+         exit  0
35+     fi 
1436fi 
1537
16- git fetch " https://github.com/$GITHUB_REPOSITORY "   " $GITHUB_BASE_REF " 
17- BASE_COMMIT=" $( git merge-base FETCH_HEAD HEAD) " 
18- 
19- echo  " Searching for toolstate changes between $BASE_COMMIT  and $( git rev-parse HEAD) " 
20- 
21- if  git diff " $BASE_COMMIT "   |  grep --quiet " ^index .* 160000" ;  then 
22-     #  Submodules pseudo-files inside git have the 160000 permissions, so when
23-     #  those files are present in the diff a submodule was updated.
24-     echo  " Executing the job since submodules are updated" 
25- elif  !  git diff --quiet " $BASE_COMMIT "   -- src/tools/clippy src/tools/rustfmt;  then 
26-     #  There is not an easy blanket search for subtrees. For now, manually list
27-     #  the subtrees.
28-     echo  " Executing the job since clippy or rustfmt subtree was updated" 
29- elif  !  (git diff --quiet " $BASE_COMMIT "   -- \
30-          src/test/rustdoc-gui \
31-          src/librustdoc \
32-          src/tools/rustdoc-gui);  then 
33-     #  There was a change in either rustdoc or in its GUI tests.
34-     echo  " Executing the job since rustdoc was updated" 
35- else 
36-     echo  " Not executing this job since no submodules nor subtrees were updated" 
37-     ciCommandSetEnv SKIP_JOB 1
38+ if  [[ -n  " ${CI_ONLY_WHEN_CHANNEL-} "   ]];  then 
39+     if  [[ " ${CI_ONLY_WHEN_CHANNEL} "   =  " $( cat src/ci/channel) "   ]];  then 
40+         echo  " The channel is the expected one" 
41+     else 
42+         echo  " Not executing this job as the channel is not the expected one" 
43+         ciCommandSetEnv SKIP_JOB 1
44+         exit  0
45+     fi 
3846fi 
47+ 
48+ 
49+ echo  " Executing the job since there is no skip rule preventing the execution" 
50+ exit  0
0 commit comments