#!/bin/sh

###################### PARAMETERS ####################
gitpath="https://github.com/csoler/RetroShare.git"
#branch="master"
branch="v0.6.5-DebianPackaging"
#bubba3="Y"      # comment out to compile for bubba3
######################################################

RS_MAJOR_VERSION=0
RS_MINOR_VERSION=6
RS_BUILD_NUMBER=5

#  echo "RS_MAJOR_VERSION="${RS_MAJOR_VERSION}
#  echo "RS_MINOR_VERSION="${RS_MINOR_VERSION}
#  echo "RS_BUILD_NUMBER="${RS_BUILD_NUMBER}

version_number="${RS_MAJOR_VERSION}"'.'"${RS_MINOR_VERSION}"'.'"${RS_BUILD_NUMBER}"
workdir=retroshare-${version_number}

echo This script is going to build the debian source package for RetroShare, from the Git repository.

if test -d "${workdir}" ;  then
    echo Removing the ${workdir} directory...
    rm -rf ${workdir}
fi

# Parse options
rev=""
dist=""
# This is the key for "Cyril Soler <csoler@sourceforge.net>"
gpgkey="0932399B"

date=`git log --pretty=format:"%ai" | head -1 | cut -d\  -f1 | sed -e s/-//g`
time=`git log --pretty=format:"%aD" | head -1 | cut -d\  -f5 | sed -e s/://g`
hhsh=`git log --pretty=format:"%H"  | head -1 | cut -c1-8`

rev=${date}.${hhsh}
useretrotor="false"

while [ ${#} -gt 0 ]; do
    case ${1} in
        "-rev") shift
            rev=${1}
            shift
            ;;
        "-key") shift
            gpgkey=${1}
            shift
            ;;
		  "-nodl")
		  		nodl=yes
				shift
				;;
		  "-makeorig") 
		  		makeorig=yes
				shift
				;;
        "-h") shift
            echo Package building script for debian/ubuntu distributions
            echo Usage:
            echo "  "${0} '-key [PGP key id] -rev [svn revision number]  -distribution [distrib name list with quotes, in (wheezy, sid, precise, saucy, etc)]'
            exit 1
            ;;
        "*") echo "Unknown option"
            exit 1
            ;;
    esac
done

removeIrrelevantFiles() {
	echo Removing irrelevant files in directory ${workdir}...
	# remove unised qml code, only needed on Android
	rm -rf ${workdir}/src/retroshare-qml-app/
	rm -rf ${workdir}/src/librssimulator/
	rm -rf ${workdir}/src/libretroshare/src/tests/
	rm -rf ${workdir}/src/libretroshare/src/unfinished/
	rm -rf ${workdir}/src/libretroshare/unused/
	rm -rf ${workdir}/src/retroshare-android-notify-service/
	rm -rf ${workdir}/src/retroshare-android-service/
	rm -rf ${workdir}/src/libretroshare/src/unused/
	rm -rf ${workdir}/src/supportlibs/
	rm -rf ${workdir}/src/retroshare-service/
	rm -rf ${workdir}/src/plugins/
	rm -rf ${workdir}/src/unittests/
	rm -rf ${workdir}/src/tests/
	rm -rf ${workdir}/src/build_scripts/
	rm -rf ${workdir}/src/libbitdht/src/tests/
	rm -rf ${workdir}/src/libbitdht/src/example/
	rm -rf ${workdir}/src/retroshare-gui/src/gui/WikiPoos/
	rm -rf ${workdir}/src/retroshare-gui/src/Unused/
	rm -f ${workdir}/debian/*~
	rm -f ${workdir}/debian/.*.sw?
	rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble_Compact/private/images.sh
	rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/src/images.sh
	rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/public/images.sh
	rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/"history"/images.sh
	rm -f ${workdir}/src/retroshare-gui/src/gui/qss/chat/Bubble/private/images.sh
}

echo Attempting to get revision number...
ccount=`git rev-list --count --all`
ccount=`expr $ccount + 8613 - 8267`

gitrev=`git describe | cut -d- -f2-3`

echo "  Workdir            :"${workdir}
echo "  Version            :"${version_number}
echo "  Using revision     :"${rev}
echo "  Git Revision       :"${gitrev}
echo "  Commit count       :"${ccount}
echo "  Hash               :"${hhsh}
echo "  Date               :"${date}
echo "  Time               :"${time}
echo "  Using branch       :"${branch}
echo "  Using PGP key id   :"${gpgkey}

if test ${useretrotor} = "true"; then
   echo "  "Specific flags     : retrotor
fi

echo Done.
version="${version_number}"."${rev}"
echo Got version number ${version} 
echo
echo Please check that the changelog is up to date. 
echo Hit ENTER if this is correct. Otherwise hit Ctrl+C 
read tmp

echo Extracting base archive...

if ! test "${makeorig}" = "yes" ; then
	if ! test -f retroshare_${version_number}.orig.tar.gz; then
		echo Error: no orig file found. Please call with -makeorig option first
		exit
	fi
fi

if ! test "${nodl}" = "yes"; then
	mkdir -p ${workdir}/src
	echo Checking out latest snapshot...
	cd ${workdir}/src
	git clone --depth 1 ${gitpath} --single-branch --branch $branch .
	
	cd -

	if ! test -d ${workdir}/src/libretroshare/; then
	   echo Git clone failed. 
	   exit
	fi

	cp -r debian ${workdir}/debian

	# VOIP tweak  
	cp ${workdir}/src/retroshare-gui/src/gui/chat/PopupChatDialog.ui ${workdir}/src/plugins/VOIP/gui/PopupChatDialog.ui

	removeIrrelevantFiles

	cd ${workdir}
	echo Setting version numbers...

	# setup version numbers
	# sed -e "s%RS_REVISION_NUMBER.*%RS_REVISION_NUMBER   0x${hhsh}%"  src/libretroshare/src/retroshare/rsversion.in > src/libretroshare/src/retroshare/rsversion.h

	# Various cleaning
	echo Cleaning...

	\rm -rf src/.git

	if test "${makeorig}" = "yes" ; then
		echo making orig archive
		cd -
		tar zcvf retroshare_${version_number}.orig.tar.gz ${workdir}
		exit
	fi

	cd -
else
	tar zxvf retroshare_${version_number}.orig.tar.gz

	cp -r debian/* ${workdir}/debian/
	removeIrrelevantFiles
fi

# Cloning sqlcipher
# git clone https://github.com/sqlcipher/sqlcipher.git

echo Calling debuild...
cd ${workdir}
debuild -S -k${gpgkey} --lintian-opts +pedantic -EviIL
cd -

exit 0