From e7e0d7d8e3bc6cb4a2bbc7aad8d69dc7e836a806 Mon Sep 17 00:00:00 2001 From: yuzelin Date: Wed, 11 Dec 2024 13:37:14 +0800 Subject: [PATCH] Add license checker --- .github/workflows/check-licensing.yml | 38 ++++++++++++++++++ dev/.rat-excludes | 20 ++++++++++ dev/check-licensing.sh | 55 +++++++++++++++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 .github/workflows/check-licensing.yml create mode 100644 dev/.rat-excludes create mode 100755 dev/check-licensing.sh diff --git a/.github/workflows/check-licensing.yml b/.github/workflows/check-licensing.yml new file mode 100644 index 0000000..a6bbdc3 --- /dev/null +++ b/.github/workflows/check-licensing.yml @@ -0,0 +1,38 @@ +################################################################################ +# 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. +################################################################################ + +name: Check licensing + +on: [push, pull_request] + +jobs: + rat-check: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set JDK + uses: actions/setup-java@v2 + with: + java-version: 8 + distribution: 'adopt' + + - name: Check licensing + run: ./dev/check-licensing.sh diff --git a/dev/.rat-excludes b/dev/.rat-excludes new file mode 100644 index 0000000..9a4e142 --- /dev/null +++ b/dev/.rat-excludes @@ -0,0 +1,20 @@ +################################################################################ +# 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. +################################################################################ + +paimon-python-java-bridge/* +.gitignore diff --git a/dev/check-licensing.sh b/dev/check-licensing.sh new file mode 100755 index 0000000..11eec29 --- /dev/null +++ b/dev/check-licensing.sh @@ -0,0 +1,55 @@ +#!/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. +################################################################################ + +download_rat_jar () { + URL="https://repo.maven.apache.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar" + JAR="$rat_jar" + + # Download rat launch jar + printf "Attempting to fetch rat\n" + wget --quiet ${URL} -O "$JAR" +} + +BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +PROJECT_ROOT="${BASE_DIR}/../" + +cd ${PROJECT_ROOT} + +mkdir -p ${PROJECT_ROOT}/rat +export RAT_VERSION=0.15 +export rat_jar=${PROJECT_ROOT}/rat/apache-rat-${RAT_VERSION}.jar + +download_rat_jar + +java -jar ${rat_jar} -E ${PROJECT_ROOT}/dev/.rat-excludes -d ${PROJECT_ROOT} > rat/rat-results.txt + +if [ $? -ne 0 ]; then + echo "RAT exited abnormally" + exit 1 +fi + +ERRORS="$(cat rat/rat-results.txt | grep -e "??")" + +if [[ -n "${ERRORS}" ]]; then + echo "Could not find Apache license headers in the following files:" + echo ${ERRORS} + exit 1 +else + echo -e "RAT checks passed." +fi