#!/bin/bash
# generates otclient zip package for win32
# by edubart :)

# TODO: the following options
# --gitroot <giturl>             - clone a different url, the default is git://github.com/edubart/otclient.git
# --platform <platform>          - compile for i486-mingw32, i586-msvc-mingw32 or linux
# --branch <branch>              - use sources from a specific branch, the default is master
# --name <name>                  - change .exe and folder name, the default is otclient
# --protocol <proto>             - game protocol, the default is 860
# --suffix <suffix>              - override suffix, the default is the date
# --copy-tibiafiles <folder>     - copy Tibia.spr and Tibia.dat from folder
# --github-upload <url>          - upload the zip to github
# --scp-upload <url>             - upload the zip to a shell via scp

gitroot="git://github.com/edubart/otclient.git"
name="otclient"
protocol=860
platform="i486-mingw32"
tibiafiles_folder="$HOME/projects/otclient/modules/game_tibiafiles"
upload_to="root@myserver.com:/var/www/downloads/"
pkg_suffix="-snapshot-`date +%Y%m%d`-protocol${protocol}-win32"
use_spr=false
upload=false
make_jobs=8

srcdir=`pwd`
if [ -d $name ]; then
    cd $name
    git pull || exit
else
    git clone $gitroot $name || exit
    cd $name
fi

gitdir=`pwd`
revision=`git rev-list --all | wc -l`
commit=`git describe --dirty --always`

rm -rf build
mkdir build
cd build

cmake -DCMAKE_TOOLCHAIN_FILE=$gitdir/src/framework/cmake/${platform}_toolchain.cmake \
        -DCMAKE_BUILD_TYPE=Release \
        -DBUILD_REVISION=$revision \
        -DBUILD_COMMIT=$commit \
        -DBOT_PROTECTION=OFF \
        -DPROTOCOL=$protocol \
        .. || exit

make "-j${make_jobs}" || exit


pkgdir="$name$pkg_suffix"
pkgzip="$pkgdir.zip"

cd $srcdir
rm -rf $pkgdir
mkdir $pkgdir
cd $pkgdir

cp -R $gitdir/modules .
cp $gitdir/build/*.exe .
cp $gitdir/build/*.map .
cp $gitdir/LICENSE .
cp $gitdir/README.rdoc .

if $use_spr; then
    cp $dat_folder/*.spr modules/game_tibiafiles/
    cp $dat_folder/*.dat modules/game_tibiafiles/
fi

cd $srcdir
rm -f $pkgzip
zip -9 -qr $pkgzip $pkgdir

echo "Package generated to $pkgzip"

if $upload; then
    scp $srcdir/$pkgzip $upload_to
fi