#!/bin/bash

PARAMS=1

# Where we can find the RPM directory
# and where we want to store the source code from cvs
CVS_PATH=/home/$USER/cvs
RPM_PATH=/home/$USER/rpm
PRODUCT_PATH=%{_libdir}/zope/lib/python/Products/
FULL_RPM_BUILD_ROOT=\$RPM_BUILD_ROOT$PRODUCT_PATH

if [ $# -lt "$PARAMS" ]
then
  echo
  echo "build-spec PACKAGE_NAME..."
  exit 0
fi  

while test $# -gt 0; do
  NAME=$1
  shift
  echo Starting Building $NAME
  # Retrieve the version in the source code
  cd $CVS_PATH/$NAME/ && cvs update -RdP && cd -
  VERSION=`awk '{print $2}' $CVS_PATH/$NAME/VERSION.txt`
  echo Building --$NAME-- Version --$VERSION--
  rm -rf $CVS_PATH/$NAME-$VERSION/
  cp -a $CVS_PATH/$NAME $CVS_PATH/$NAME-$VERSION
  # remove because this does not remove files
  cd $CVS_PATH && tar jcvf $NAME-$VERSION.tar.bz2 $NAME-$VERSION && cd -
  rm -f $RPM_PATH/SOURCES/$NAME-$VERSION.tar.bz2
  cp $CVS_PATH/$NAME-$VERSION.tar.bz2 $RPM_PATH/SOURCES/
  #rpmbuild -ba $RPM_PATH/SPECS/$NAME.spec

  # We will generate one part of the spec file, so we make sure
  # to not forget any file
  # Generate the folder tree
  rm -f /tmp/build-rpm-install.tmp
  rm -f /tmp/build-rpm-files.tmp
  rm -f /tmp/build-rpm-spec.tmp

  for directory in "" `cd $CVS_PATH/$NAME && find * -type d -not -name "CVS" && cd -`
    do echo install -d $FULL_RPM_BUILD_ROOT/%{name}/$directory | sed -e "s/\/\//\//g" >> /tmp/build-rpm-install.tmp
      # then add files we want to include into the rpm
      for file_type in py dtml txt png pt stx form zsql gif jpg css html props xml
        do if (ls $CVS_PATH/$NAME/$directory/*.$file_type > /dev/null 2>&1)
          then echo install %{name}-%{version}/$directory/*.$file_type $FULL_RPM_BUILD_ROOT/%{name}/$directory | sed -e "s/\/\//\//g" >> /tmp/build-rpm-install.tmp
        fi
      done

    done

  echo $PRODUCT_PATH%{name}/ >> /tmp/build-rpm-files.tmp

  # now we will regenerate the spec file
  # The line where we have %install
  L_INSTALL=`grep -n "%install" $NAME.spec| sed -e "s/:/ /g" |awk '{print $1}'`
  # The line where we have %clean
  L_CLEAN=`grep -n "%clean" $NAME.spec| sed -e "s/:/ /g" |awk '{print $1}'`
  # The line where we have %doc
  L_DOC=`grep -n "%doc" $NAME.spec| sed -e "s/:/ /g" |awk '{print $1}'`
  # The line where we have %changelog
  L_CHANGELOG=`grep -n "%changelog" $NAME.spec| sed -e "s/:/ /g" |awk '{print $1}'`
  # The total number of lines 
  L_TOTAL=`wc -l $NAME.spec | awk '{print $1}'`
  # Take the head of the file
  head -n $L_INSTALL $NAME.spec > /tmp/build-rpm-spec.tmp
  cat /tmp/build-rpm-install.tmp >> /tmp/build-rpm-spec.tmp
  head -n $L_DOC $NAME.spec | tail -n `expr $L_DOC - $L_CLEAN + 1` >> /tmp/build-rpm-spec.tmp
  cat /tmp/build-rpm-files.tmp >> /tmp/build-rpm-spec.tmp
  echo "#----------------------------------------------------------------------" >> /tmp/build-rpm-spec.tmp
  tail -n `expr $L_TOTAL - $L_CHANGELOG + 1` $NAME.spec >> /tmp/build-rpm-spec.tmp

  # now we can replace the spec file
  rm -f $RPM_PATH/SPECS/$NAME.spec
  cp -f /tmp/build-rpm-spec.tmp $RPM_PATH/SPECS/$NAME.spec


done

exit 0