#!/bin/bash

TOPDIR="`dirname $0`/.."

cd $TOPDIR

echo -n "Please enter branch to cut tarball from: "
read branch

if [ "x$branch" = "x" ]; then
   echo "You must enter a name!  Exiting...."
   exit 1
fi

git-checkout $branch
if [ $? -ne 0 ]; then
   echo "Invalid branch name!  Exiting...."
   exit 2
fi

VER_H=source/include/version.h
(cd source && ./script/mkversion.sh)

if [ ! -f $VER_H ]; then
   echo "Failed to find $VER_H!  Exiting...."
   exit 1
fi

version=`grep SAMBA_VERSION_OFFICIAL_STRING $VER_H | awk '{print $3}'`
vendor_version=`grep SAMBA_VERSION_VENDOR_SUFFIX $VER_H | awk '{print $3}'`
if [ -n "$vendor_version" ]; then
    version="$version-$vendor_version"
fi
version=`echo $version | sed 's/\"//g'`

echo "Creating release tarball for Samba $version"

/bin/rm -rf ../samba-${version}
git-archive --format=tar --prefix=samba-${version}/ HEAD | (cd .. && tar xf -)

pushd ../samba-${version}

echo "Enter the absolute path to the generated Samba docs directory."
echo -n "Just hit return to exclude the docs from the generate tarball: "
read docsdir

if [ "x$docsdir" != "x" ]; then
   if [ ! -d "$docsdir" ]; then
      echo "$docsdir does not exist!  Exiting...."
      exit 1
   fi

   /bin/rm -rf docs
   mkdir docs
   rsync -a --exclude=.svn $docsdir/ docs/

   cd docs
   /bin/rm -rf test.pdf Samba4*pdf htmldocs/Samba4* htmldocs/test
   /bin/mv manpages-3 manpages
   /bin/mv htmldocs/manpages-3 htmldocs/manpages
   cd ..
fi

cd source
./autogen.sh
cd ..

cd ..
tar cf samba-${version}.tar --exclude=.git* --exclude=CVS --exclude=.svn samba-${version}
gpg --detach-sign --armor samba-${version}.tar
gzip -9 samba-${version}.tar

popd
echo -n "Enter tag name (or hit <enter> to skip): "
read tagname

if [ "x$tagname" != "x" ]; then
   if [ "x`git-tag -l $tagname`" != "x" ]; then
      echo -n "Tag exists.  Do you wish to overwrite? (y/N): "
      read answer

      if [ "x$answer" != "xy" ]; then
      	 echo "Tag creation aborted."
	 exit 1
      fi
   fi

   echo -n "Enter the keyid:"
   read keyid
   if [ x"$keyid" = x"" ];then
      echo "no keyid"
      exit 1
   fi
   git-tag -u $keyid ${tagname}
fi

echo "Done!"
exit 0
