#!/bin/bash
#
# Copyright (C) Anders Logg 2004-2007
# Licensed under the GNU GPL version 3 or any later version
#
# This script creates a new release of FFC

# Make sure FFC is not installed
echo '--- Uninstalling FFC'
ffc-uninstall

# Make sure we have the current version
echo '--- Synchronizing repository'
sleep 1
hg pull http://www.fenics.org/hg/ffc
hg update
hg commit
hg push ssh://ffc@fenics.org/hg/ffc
echo '--- Repository synchronized, press return to continue'
read

# Update version number in ChangeLog
echo '--- Update version number in ChangeLog'
sleep 1
emacs -nw ChangeLog

# Update version number in constants.py
echo '--- Update version number in constants.py'
sleep 1
emacs -nw src/ffc/common/constants.py

# Update version number in setup.py
echo '--- Update version number in setup.py'
sleep 1
emacs -nw setup.py

# Get the version number
VERSION=`grep 'FFC_VERSION' src/ffc/common/constants.py | cut -d'"' -f2`
echo "--- Version number is $VERSION"
sleep 1

# Run tests
echo '--- Running tests'
cd src/test
python test.py
echo '--- Only version numbers should differ, press return to continue'
read
cd ../..
cp src/demo/*.h src/test/regression/reference

# Run benchmark problem
echo '--- Running benchmark problem'
cd src/bench
echo "FFC version $VERSION" >> bench.log
date >> bench.log
echo "" >> bench.log
./bench >> bench.log
cd ../../

# Commit changes to hg
echo '--- Pushing changes to parent repository'
hg commit
hg push ssh://ffc@fenics.org/hg/ffc
echo '--- Changes pushed, press return to continue'
read

# Write a message
echo "--- Creating release $VERSION of FFC"

# Create the directory
DISTDIR=ffc-$VERSION
echo "--- Creating directory release/$DISTDIR"
mkdir -p release
cd release
rm -rf $DISTDIR
hg clone .. $DISTDIR
rm -rf $DISTDIR/.hg
rm -f $DISTDIR/.hgignore

# Create the archive
TARBALL="ffc-$VERSION.tar.gz"
echo "--- Creating arhive $TARBALL"
tar zcf $TARBALL $DISTDIR
cd ..

# Copy archive and files to web page
echo '--- Copying files to web server'
scp release/$TARBALL fenics@fenics.org:www.fenics.org/pub/software/ffc/v0.4
scp ChangeLog fenics@fenics.org:www.fenics.org/pub/software/ffc/
scp TODO fenics@fenics.org:www.fenics.org/pub/software/ffc/

# Update on web server
echo '--- Update web pages'
echo '1. Update FFC page'
echo '2. Update download page'
#ssh -t fenics@fenics.org 'emacs -nw www.fenics.org/ffc/index.cpp'
#ssh -t fenics@fenics.org 'emacs -nw www.fenics.org/download/index.cpp'
ssh -t fenics@fenics.org '/home/fenics/local/bin/news'

# Notify ffc-dev of the new version
echo '--- Notifying mailing list'
SUBJECT="Version "$VERSION" of FFC released"
cat ChangeLog | mail -s "$SUBJECT" ffc-dev@fenics.org
