skywalking-java/tools/ci/changed.sh

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