diff options
| author | jkoan <jkoan@users.noreply.github.com> | 2019-11-05 11:52:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-11-05 11:52:05 +0100 |
| commit | 5d1005ecced8b6f56a39c8f9d7c930a4b55006d1 (patch) | |
| tree | 96164622a1847c3d4c02c450f0fd6c2cbf0ed534 /scripts/check_need_build.sh | |
| parent | c332b256294df0156a218fd187cd001b9c494682 (diff) | |
| parent | 39f745bc282c45443deef8e13b381f207207da58 (diff) | |
| download | navit-compiler_warnings.tar.gz | |
Merge branch 'trunk' into compiler_warningscompiler_warnings
Diffstat (limited to 'scripts/check_need_build.sh')
| -rwxr-xr-x | scripts/check_need_build.sh | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/scripts/check_need_build.sh b/scripts/check_need_build.sh new file mode 100755 index 000000000..124722e9a --- /dev/null +++ b/scripts/check_need_build.sh @@ -0,0 +1,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}" ]] |
