#!/bin/bash

# set -x

ICUROOT="$(dirname "$0")/.."

if [ $# -lt 3 ];
then
  echo "Usage: "$0" (android|cast|chromeos|common|flutter|ios) icubuilddir1 icubuilddir2" >&2
  echo "$0 compare data files of a particular build inside two icu build directory." >&2
  echo "These files were previously archived by backup_outdir in scripts/copy_data.sh." >&2
  echo "The first parameter indicate which build to be compared." >&2
  exit 1
fi

# Input Parameters
BUILD=$1
DIR1=$2
DIR2=$3

unset RMLIST
if [ -f ${ICUROOT}/${BUILD}/${BUILD}-removed-resources.txt ]
then
  for res in $(egrep -v '(^$|^#)' "${ICUROOT}/${BUILD}/${BUILD}-removed-resources.txt")
  do
    res=${res//[.]/\[.\]}
    OP=${RMLIST:+|}
    RMLIST=${RMLIST}${OP}${res}
  done
  RMLIST="^(${RMLIST})"
else
  RMLIST="^$"
fi


echo "======================================================="
echo "                ${BUILD} BUILD REPORT"
echo "======================================================="
RESSUBDIR1=`ls ${DIR1}/dataout/${BUILD}/data/out/build`
RESDIR1="${DIR1}/dataout/${BUILD}/data/out/build/${RESSUBDIR1}"
ICUDATA_LST1="${DIR1}/dataout/${BUILD}/data/out/tmp/icudata.lst"
RESSUBDIR2=`ls ${DIR2}/dataout/${BUILD}/data/out/build`
RESDIR2="${DIR2}/dataout/${BUILD}/data/out/build/${RESSUBDIR2}"
ICUDATA_LST2="${DIR2}/dataout/${BUILD}/data/out/tmp/icudata.lst"
SORTED_ICUDATA_LST1=/tmp/${BUILD}1_icudata_lst
SORTED_ICUDATA_LST2=/tmp/${BUILD}2_icudata_lst

sort ${ICUDATA_LST1} >${SORTED_ICUDATA_LST1}
sort ${ICUDATA_LST2} >${SORTED_ICUDATA_LST2}
echo "              ICUDATA.LST DIFFERENCES"
diff -u ${SORTED_ICUDATA_LST1} ${SORTED_ICUDATA_LST2}
echo "-------------------------------------------------------"


echo -n "> Checking and sorting the diff size ."
SIZEFILE=/tmp/${BUILD}size.txt
SIZESORTEDFILE=/tmp/${BUILD}sizesorted.txt
count=0
rm -rf $SIZEFILE
for res in $(egrep -v "${RMLIST}" "${SORTED_ICUDATA_LST2}")
do
  # diff the txt file
  STAT1=`stat --printf="%s" ${RESDIR1}/$res`
  STAT2=`stat --printf="%s" ${RESDIR2}/$res`
  SIZEDIFF=`expr $STAT2 - $STAT1`
  echo $SIZEDIFF $STAT1 $STAT2 $res >> $SIZEFILE
  count=`expr $count + 1`
  if [ $count -gt 100 ]
  then
    count=0
    echo -n "."
  fi
done

echo "#Increase Old New Res" > $SIZESORTEDFILE
sort -n $SIZEFILE >>$SIZESORTEDFILE

echo ""
echo "-------------------------------------------------------"
echo "              RES SIZE DIFFERENCES"
cat $SIZESORTEDFILE

exit
