blob: 124722e9aa7b7183b32fd961ca118794f81c89f2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#!/bin/bash -e
# ################################################################################################################### #
# This file exits 1 if there are files of interest that should trigger a build and exits normally otherwise. #
# The idea is also to build if the exit code is different from 0 as it means we cannot get a filtered list properly. #
# ################################################################################################################### #
# If we are on a tag, just exit 1 as we want to go on with the build
git describe --exact-match --tags HEAD 2>&1 2>/dev/null && exit 1 || echo "Not on a tag, checking files diff"
# This block constructs the list of files that differ from the trunk branch.
# Note that if you are on the trunk or master branch it will return the files modified by the last commit.
declare -a file_list=$(git diff --name-only refs/remotes/origin/trunk)
# If there is no diff that might just mean that you are on the trunk or master branch
# so you just want to check the last commit. This way we still have that check more
# or less working when pushing directly to trunk or when merging in master.
if [[ -z "$file_list" ]]; then
file_list=$(git diff --name-only HEAD^)
fi
# This block filters out those don't match the pattern we use to exclude files that should not trigger a build.
declare -a filters=('^docs/.*' '.*\.md$' '.*\.rst$')
for f in ${file_list[@]}; do
for filter in "${filters[@]}" ; do
echo "checking $f with filter $filter"
if [[ "$f" =~ $filter ]]; then
# This removes the element from the element matching the filter
file_list=(${file_list[@]/$f})
echo "filtering out $f"
break
fi
done
done
# exits with a 0 if the list is empty
[[ -z "${file_list}" ]]
|