#!/bin/bash
set -e
shopt -s nullglob

echo "Verifying license script is still happy..."
echo "Using pub from `which pub`, dart from `which dart`"

exitStatus=0

dart --version

# These files trip up the script on Mac OS X.
find . -name ".DS_Store" -exec rm {} \;

(cd flutter/tools/licenses; pub get; dart --enable-asserts lib/main.dart --src ../../.. --out ../../../out/license_script_output --golden ../../ci/licenses_golden)

for f in out/license_script_output/licenses_*; do
    if ! cmp -s flutter/ci/licenses_golden/$(basename $f) $f
    then
        echo "============================= ERROR ============================="
        echo "License script got different results than expected for $f."
        echo "Please rerun the licenses script locally to verify that it is"
        echo "correctly catching any new licenses for anything you may have"
        echo "changed, and then update this file:"
        echo "  flutter/sky/packages/sky_engine/LICENSE"
        echo "For more information, see the script in:"
        echo "  https://github.com/flutter/engine/tree/master/tools/licenses"
        echo ""
        diff -U 6 flutter/ci/licenses_golden/$(basename $f) $f
        echo "================================================================="
        echo ""
        exitStatus=1
    fi
done

echo "Verifying license tool signature..."
if ! cmp -s flutter/ci/licenses_golden/tool_signature out/license_script_output/tool_signature
then
    echo "============================= ERROR ============================="
    echo "The license tool signature has changed. This is expected when"
    echo "there have been changes to the license tool itself. Licenses have"
    echo "been re-computed for all components. If only the license script has"
    echo "changed, no diffs are typically expected in the output of the"
    echo "script. Verify the output, and if it looks correct, update the"
    echo "license tool signature golden file:"
    echo "  ci/licenses_golden/tool_signature"
    echo "For more information, see the script in:"
    echo "  https://github.com/flutter/engine/tree/master/tools/licenses"
    echo ""
    diff -U 6 flutter/ci/licenses_golden/tool_signature out/license_script_output/tool_signature
    echo "================================================================="
    echo ""
    exitStatus=1
fi

echo "Checking license count in licenses_flutter..."
actualLicenseCount=`tail -n 1 flutter/ci/licenses_golden/licenses_flutter | tr -dc '0-9'`
expectedLicenseCount=2 # When changing this number: Update the error message below as well describing all expected license types.

if [ "$actualLicenseCount" -ne "$expectedLicenseCount" ]
then
    echo "=============================== ERROR ==============================="
    echo "The total license count in flutter/ci/licenses_golden/licenses_flutter"
    echo "changed from $expectedLicenseCount to $actualLicenseCount."
    echo "It's very likely that this is an unintentional change. Please"
    echo "double-check that all newly added files have a BSD-style license"
    echo "header with the following copyright:"
    echo "    Copyright 2013 The Flutter Authors. All rights reserved."
    echo "Files in 'third_party/txt' may have an Apache license header instead."
    echo "If you're absolutely sure that the change in license count is"
    echo "intentional, update 'flutter/ci/licenses.sh' with the new count."
    echo "================================================================="
    echo ""
    exitStatus=1
fi

if [ "$exitStatus" -eq "0" ]
then
  echo "Licenses are as expected."
fi
exit $exitStatus
