#!/bin/bash
###############################################################################
# Copyright (c) 2020, 2021 Kichwa Coders Canada Inc and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
###############################################################################

set -e

# This script is used to check the current status of all dependencies to make sure no
# CQs need to be filed.


echo Generate the list of dependencies according to Maven
${MVN:-mvn} -B -V package dependency:list -DappendOutput=true -DoutputFile=$PWD/deps-raw.log  >mvn-dependency-list.log 2>&1
echo Clean out the lines and whitespace that are not actually dependencies
cat deps-raw.log | grep -v "The following files have been resolved" | grep -v "   none" | grep -Poh '[^ ]*' > deps-stripped.log
echo Sort and uniqify and store all deps in deps.log that will be passed to the tool
cat deps-stripped.log | sort -u > deps.log

if test -e dash-licenses; then
    echo Pull and build Dash Licenses
    (cd dash-licenses && git pull)  >git-pull.log  2>&1
else
    echo Clone and build Dash Licenses
    git clone https://github.com/eclipse/dash-licenses.git >git-clone.log  2>&1
fi
${MVN:-mvn} -B -V -f dash-licenses clean package >dash-build.log  2>&1

echo Run the license check
exit_code=0
if ! java -jar dash-licenses/core/target/org.eclipse.dash.licenses-*-SNAPSHOT.jar deps.log >dash-licenses.log  2>&1; then
    echo Some licenses appear to have failed a check, review output below.
    exit_code=1
fi

echo See *.log for various outputs. The key one is dash-licenses.log which is the summary and repeated below:
echo ============ dash-licenses.log ============
cat dash-licenses.log

exit $exit_code
