#!/bin/bash

git reset --hard HEAD
git clean -f -d

STAMP=`date +%y%m%d-%H%M`
mkdir ../diffs-$STAMP
mkdir -p ../validate-$STAMP/pear.horde.org
mkdir -p ../validate-$STAMP/rebuild

for package in `cat ../pear-recovery-packages.txt | grep -v ".tar$"`
do
  TAG=${package/.tgz/}
  TAG=${TAG,,}
  PPATH=${package/-*/}
  if [ "x${PPATH/Horde_*/}" == "x" ]; then
      PPATH=framework/${PPATH/Horde_};
  fi
  if [ "x${PPATH/groupware*/}" == "x" ]; then
      PPATH=bundles/$PPATH;
  fi
  if [ "x${PPATH/webmail*/}" == "x" ]; then
      PPATH=bundles/$PPATH;
  fi
  PRESENT=`git tag -l $TAG`
  if [ "x$PRESENT" == "x" ]; then
      echo
      echo "======================================================================"
      echo "Tag $TAG for package $package is missing!"
      echo "======================================================================"
      echo
      echo "$package: TAG MISSING" >> ../status-$STAMP
  else
      rm *.tgz
      rm -rf ../validate-$STAMP/pear.horde.org/*
      rm -rf ../validate-$STAMP/rebuild/*
      GIT=`git checkout $TAG`
      horde-components -z $PPATH --keep-version
      if [ -e $package ]; then
	  cp *.tgz ../validate-$STAMP/pear.horde.org/
	  cp ../pear.horde.org/get/$package ../validate-$STAMP/rebuild/
	  tar -C ../validate-$STAMP/pear.horde.org/ -x -z -f ../validate-$STAMP/pear.horde.org/*.tgz
	  tar -C ../validate-$STAMP/rebuild/ -x -z -f ../validate-$STAMP/rebuild/*.tgz
	  DIFF=`diff -Naur ../validate-$STAMP/pear.horde.org/${package/.tgz/} ../validate-$STAMP/rebuild/${package/.tgz/}`
	  if [ "x$DIFF" != "x" ]; then
	      echo
	      echo "======================================================================"
	      echo "Diff for package $package detected!"
	      diff -Naur ../validate-$STAMP/pear.horde.org/${package/.tgz/} ../validate-$STAMP/rebuild/${package/.tgz/} > ../diffs-$STAMP/${package/.tgz/}.diff
	      echo "======================================================================"
	      echo
	      echo "$package: DIFF" >> ../status-$STAMP
	  else
	      echo
	      echo "======================================================================"
	      echo "$package CLEAN!!!"
	      echo "======================================================================"
	      echo
	      echo "$package: CLEAN" >> ../status-$STAMP
	  fi
      else
	  echo
	  echo "======================================================================"
	  echo "Failed rebuilding package $package!"
	  echo "======================================================================"
	  echo
	  echo "$package: FAILED REBUILDING" >> ../status-$STAMP
      fi
  fi
done
