blob: d76d69202ef902c25784f7bb7367517c35e7b925 [file]
#!/bin/sh
#
# 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.
### Apache RAT license check script ###
# This script downloads Apache RAT and runs it to check the license headers of the source files.
set -e
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
TMP_DIR="$(mktemp -d)"
RAT_VERSION="0.16.1"
RAT_JAR="${TMP_DIR}/apache-rat-${RAT_VERSION}.jar"
cd "${ROOT_DIR}"
# Set Java command
if [ -x "${JAVA_HOME}/bin/java" ]; then
java_cmd="${JAVA_HOME}/bin/java"
else
java_cmd="java"
fi
# Download Apache RAT jar
echo "Downloading Apache RAT ${RAT_VERSION}..."
RAT_URL="https://repo1.maven.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar"
JAR_PART="${RAT_JAR}.part"
if command -v curl &> /dev/null; then
curl -L --silent "${RAT_URL}" -o "${JAR_PART}" && mv "${JAR_PART}" "${RAT_JAR}"
elif command -v wget &> /dev/null; then
wget --quiet "${RAT_URL}" -O "${JAR_PART}" && mv "${JAR_PART}" "${RAT_JAR}"
else
echo "Neither curl nor wget found."
exit 1
fi
unzip -tq "${RAT_JAR}" > /dev/null
if [ $? -ne 0 ]; then
echo "Downloaded Apache RAT jar is invalid"
exit 1
fi
echo "Downloaded Apache RAT ${RAT_VERSION} successfully."
# Run Apache RAT
echo "Running Apache license check, this may take a while..."
${java_cmd} -jar ${RAT_JAR} -d ${ROOT_DIR} -E "${ROOT_DIR}/.license-ignore" > "${TMP_DIR}/rat-report.txt"
# Check the result
if [ $? -ne 0 ]; then
echo "RAT exited abnormally"
exit 1
elif grep -q "??" "${TMP_DIR}/rat-report.txt"; then
echo >&2 "Could not find Apache license headers in the following files:"
grep "??" "${TMP_DIR}/rat-report.txt" >&2
exit 1
else
echo "Apache license check passed."
fi