58 lines
1.6 KiB
Bash
58 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
patterns=()
|
|
any_of=0
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--any-of)
|
|
any_of=1
|
|
;;
|
|
*)
|
|
patterns+=($1)
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
[[ ${#patterns[@]} -eq 0 ]] && echo 'No file pattern is specified, exiting' && exit 1
|
|
|
|
changed_files=$(git diff --name-only origin/${ghprbTargetBranch:-master}..${ghprbActualCommit:-HEAD})
|
|
|
|
test_results=()
|
|
|
|
for file in ${changed_files}; do
|
|
for pattern in ${patterns[@]}; do
|
|
if [[ ${file} =~ ${pattern} ]]; then
|
|
test_results+=("Hit: ${file} matches pattern ${pattern}")
|
|
else
|
|
test_results+=("Miss: ${file} does not match pattern ${pattern}")
|
|
fi
|
|
done
|
|
done
|
|
|
|
IFS=$'\n' ; echo "${test_results[*]}"
|
|
|
|
if [[ ${any_of} -eq 1 ]]; then
|
|
for test_result in ${test_results[@]}; do
|
|
[[ ${test_result} =~ ^Hit:.+$ ]] && echo ${test_result} && exit 1
|
|
done
|
|
fi
|
|
|
|
exit 0 |