#!/bin/sh
#
# makesrcdist - make a distribution of FLTK.
#
# There are 3 different modes of operation, dependent on commandline arguments:
#
#  (1)	Create snapshot:
#
#	makesrcdist [snapshot]
#
#	Use no arguments or "snapshot" (verbatim).
#
#  (2)	Create distribution tarballs for test and verification:
#
#	makesrcdist <version>
#
#	Use a version number as argument, e.g. "1.3.3" or "1.3.4rc2".
#	This can be used for local testing.
#
#	Note: the release tarballs will be created from the current
#	'HEAD' revision of your local Git repository.
#
#  (3)	Create distribution tarballs (final):
#
#	makesrcdist <version> tag
#
#	Same as (2), but create Git tag with version number.
#	Enter "tag" (verbatim) as 2nd argument.
#	This will create the Git tag "release-<version>" for the
#	current revision in the (local) FLTK Git repository and export the
#	FLTK sources from this tag for creation of distribution files.
#
#	Note: You need to 'git push' the Git tag manually when you
#	are satisfied with the result. You may use:
#	  $ git push origin release-<version>
#	where '<version>' is the version number (argument #1)
#
# Note: define FLTK_TAR if you want to use a different compatible tar
#	command than "tar", e.g. to use "gtar" (bash syntax):
#	$ export FLTK_TAR="gtar"
#

TAR="tar"
if test "x$FLTK_TAR" != "x"; then
  TAR="$FLTK_TAR"
fi

# These are the release and snapshot download URL's currently in use:

DOWNLOAD='http://fltk.org/pub/fltk'
SNAPSHOT='http://fltk.org/pub/fltk/snapshots'

DATE="`date +'%Y%m%d'`"

# VS = short version number ('major.minor'), for instance '1.4'.
# Note: VS is used only for snapshot generation

VS="`cat VERSION | sed -e's/\([0-9]*\.[0-9]*\).*/\1/'`"

echo "Getting distribution..."

if test $# = 0 -o "x$1" = "xsnapshot"; then
	echo Getting snapshot revision...
	rev="`git rev-parse --short=8 HEAD`"
	version="${VS}-git"
	fileversion="${VS}.x-${DATE}-$rev"
	fileurl="$SNAPSHOT/fltk-$fileversion.tar.gz"
	echo "fileversion = $fileversion"
	echo "fileurl     = $fileurl"
	url="."
else
	if test ! -e "documentation/html/"; then
		echo "ERROR: Please generate the HTML documentation before distributing:"
		echo "  autoconf"
		echo "  ./configure"
		echo "  cd documentation; make dist"
		exit
	fi
	if test ! -e "documentation/fltk.pdf"; then
		echo "ERROR: Please generate the PDF documentation before distributing:"
		echo "  autoconf"
		echo "  ./configure"
		echo "  cd documentation; make dist"
		exit
	fi
	rev="1"
	version=$1
	fileversion=$1
	fileurl="$DOWNLOAD/$version/fltk-$fileversion-source.tar.gz"

	if test "x$2" != "xtag"; then
		url="."
	else
		echo "Creating Git tag 'release-$version' ..."
		git tag -a -m "Tag $version" release-$version || exit 1
	fi
fi

echo Exporting $version to /tmp/fltk-$version/...
rm -rf /tmp/fltk-$version
mkdir /tmp/fltk-$version
git archive --format=tar HEAD | $TAR -C /tmp/fltk-$version -x --

if test $# != 0 -a "x$1" != "xsnapshot"; then
	echo "Copying HTML and PDF documentation..."
	cp -r documentation/html /tmp/fltk-$version/documentation/
	cp documentation/fltk.pdf /tmp/fltk-$version/documentation/
fi

echo Applying version number...
cd /tmp/fltk-$version

fileurl=`echo $fileurl | sed -e '1,$s/\\//\\\\\\//g'`
sed -e '1,$s/@VERSION@/'$version'/' \
	-e '1,$s/@RELEASE@/'$rev'/' \
	-e '1,$s/^Source:.*/Source: '$fileurl'/' \
	<fltk.spec.in >fltk.spec

echo Creating configure script...
autoconf -f

echo Creating config.guess and config.sub \(ignore any other errors\)...
automake --add-missing --copy

echo Cleaning developer files...
rm -rf OpenGL autom4te* bc5 config forms glut images packages themes

cd ..

if test $# != 0 -a "x$1" != "xsnapshot"; then
	echo "Making HTML docs distribution..."
	$TAR czf fltk-$fileversion-docs-html.tar.gz fltk-$version/documentation/html/

	echo "Making PDF docs distribution..."
	$TAR czf fltk-$fileversion-docs-pdf.tar.gz fltk-$version/documentation/fltk.pdf
fi

echo "Removing documentation..."
rm -rf fltk-$version/documentation/html/
rm -f fltk-$version/documentation/fltk.pdf

echo "Making UNIX distribution..."
$TAR czf fltk-$fileversion-source.tar.gz fltk-$version

#echo "Making BZ2 distribution..."
#$TAR cjf fltk-$fileversion-source.tar.bz2 fltk-$version

#echo "Making Windows distribution..."
#rm -f fltk-$fileversion-source.zip
#zip -r9 fltk-$fileversion-source.zip fltk-$version

echo "Removing distribution directory..."

rm -rf fltk-$version

if test "x$2" = "xtag"; then
	echo ""
	echo "Don't forget to push the Git tag"
	echo "(assuming 'origin' as your remote Git repository):"
	echo ""
	echo "\$ git push origin release-$version"
	echo ""
fi

echo "Done!"
