#!/bin/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.
RAT_REPORT="mvn apache-rat:check -Drat.ignoreErrors=true -Drat.excludeSubProjects=false"
for i in *; do
  if [ -e $i/pom.xml ]; then
    echo "Checking $i"
    cd $i
    $RAT_REPORT >../$i.log
    cd ..
  fi
done;
# Printout the reports only first 19 lines which contain the usefull information.
head -n19 `find . -maxdepth 3 -type f -name "rat.txt"`
# Removing report logs.
#for i in $FOLDERS; do
#  rm $i.log
#done;
