#!/bin/bash

# Version: 4.4.2002
PATH=$PATH

echo "Warning !"
echo "Dont use this script if you dont know what it is doing !"
echo "Press CTRL-C to abort !"
read a
clear

echo "Get version from configure.in"
VERSION=`cat configure.in | grep AM_INIT_AUTOMAKE | cut -d, -f2 | cut -d" " -f2 | cut -d\) -f1`
DATE=`date +%Y%m%d`
TIME=`date +%H%M%S`
SPEC="gtklp.spec"
RPMDIR="/usr/src/rpm"

ALLDOCS="AUTHORS BUGS ChangeLog COPYING NEWS README TODO USAGE"


echo "Building all packages for version $VERSION"
echo "Revision [1] :"
read a
if [ "$a" == "" ]
then
	REV=1
else
	REV=$a
fi
echo "Processor [i386] : "
read a
if [ "$a" == "" ]
then
	PROC=i386
else
	PROC=$a
fi

echo "---"
echo "Building"
echo "Version: "$VERSION
echo "Revision: "$REV
echo "Processor: "$PROC
echo "---"
echo "Press the anykey..."
read a

echo "Backup..."
tar -cf ../backup.$DATE.$TIME.tar .

echo "Building one time to get config.h.fallback"
rm -f config.h
rm -f config.h.in
sh autogen.sh
./configure
cp config.h config.h.fallback

echo "Tidy up..."
make distclean
find . -name "core" -exec rm -f {} \;
find . -name "out" -exec rm -f {} \;
find . -name ".xvpics" -type d -exec rm -rf {} \;
find . -name "*.o" -exec rm -rf {} \;
find . -name "*.a" -exec rm -rf {} \;
find . -name ".deps" -type d -exec rm -rf {} \;
rm -f gtklp/Makefile.in
rm -f gtklp/Makefile
rm -f gtklp/.deps/
rm -f gtklp/gtklp
rm -f gtklpq/gtklpq
rm -f gtklpq/Makefile.in
rm -f gtklpq/Makefile
rm -f intl/Makefile
rm -f libgtklp/Makefile.in
rm -f libgtklp/Makefile
rm -f po/Makefile.in
rm -f po/Makefile
rm -f po/*.gmo
rm -f po/POTFILES
rm -f aclocal.m4
rm -f INSTALL
rm -f stamp-h.in
rm -f Makefile.in
rm -f configure
rm -f config.log
rm -f config.status
rm -f Makefile
rm -f config.h
rm -f config.h.in
rm -f stamp-h

echo
echo "Check version number in configure.in"
cat configure.in | sed -e s/"AC_INIT(\[gtklp\],\[[0-9]*\.[0-9]*.*\])"/"AC_INIT([gtklp],[$VERSION])"/ >.tmp
cp .tmp configure.in
rm .tmp

echo
echo "Put languages into configure.in"
LANGS=""
for entry in po/*.po
do
	LANGS=$LANGS" "`basename $entry | sed -e s/"\.po"//`
done
LANGS=`echo \"$LANGS\" | sed -e s/" "//`
echo "Found: $LANGS"
cat configure.in | sed -e s/ALL_LINGUAS=\".*\"/"ALL_LINGUAS=$LANGS"/ >.tmp
cp .tmp configure.in
rm .tmp

echo
echo "Check version number in config.h.fallback"
cat config.h.fallback | sed -e s/"\#define VERSION \".*\""/"\#define VERSION \"$VERSION\""/ >.tmp
cp .tmp config.h.fallback
rm .tmp

echo
echo "Check version number in man/gtklp.1"
IDSTR=`grep -e "\.TH \"gtklp\" \"1\" \"$VERSION\" \"Tobias Mueller\" \"Printing\"" man/gtklp.1`
if [ "$IDSTR" == "" ]
then
	echo "Version not changed !"
	echo "Perhaps *you* have to change something in it ?!"
	echo "(C)hange version numbers automaticly ?"
	read a
	if [ "$a" == "C" ] || [ "$a" == "c" ]
	then
		echo "Change it..."
		cat man/gtklp.1 | sed -e s/"\.TH \"gtklp\" \"1\" \"[0-9]*\.[0-9]*.*\" \"Tobias Mueller\" \"Printing\""/"\.TH \"gtklp\" \"1\" \"$VERSION\" \"Tobias Mueller\" \"Printing\""/ >.tmp
		cp .tmp man/gtklp.1
		rm .tmp
	else
		echo "Leaving old version number."
	fi
fi

echo
echo "Check version number in man/gtklpq.1"
IDSTR=`grep -e "\.TH \"gtklpq\" \"1\" \"$VERSION\" \"Tobias Mueller\" \"Printing\"" man/gtklpq.1`
if [ "$IDSTR" == "" ]
then
	echo "Version not changed !"
	echo "Perhaps *you* have to change something in it ?!"
	echo "(C)hange version numbers automaticly ?"
	read a
	if [ "$a" == "C" ] || [ "$a" == "c" ]
	then
		echo "Change it..."
		cat man/gtklpq.1 | sed -e s/"\.TH \"gtklpq\" \"1\" \"[0-9]*\.[0-9]*.*\" \"Tobias Mueller\" \"Printing\""/"\.TH \"gtklpq\" \"1\" \"$VERSION\" \"Tobias Mueller\" \"Printing\""/ >.tmp
		cp .tmp man/gtklpq.1
		rm .tmp
	else
		echo "Leaving old version number."
	fi
fi


echo
echo "Check if all po-files are changed to new version"
for entry in po/*.po
do
	echo
	echo "Check $entry..."
	IDSTR=`grep -i "Project-Id-Version" "$entry" | grep "$VERSION"`
	if [ "$IDSTR" == "" ]
	then
		echo "File not changed !"
		echo "Perhaps *you* have to change something in it ?!"
		echo "(C)hange version numbers automaticly ?"
		read a
		if [ "$a" == "C" ] || [ "$a" == "c" ]
		then
			echo "Change it..."
			cat $entry | sed -e s/"\"Project-Id-Version: gtklp [0-9]*\.[0-9]*.*\\\n\""/"\"Project-Id-Version: gtklp $VERSION\\\n\""/ >.tmp
			cp .tmp $entry
			rm .tmp
		else
			echo "Leaving old version number."
		fi
	fi
done

echo "Building spec-file..."
echo "Summary: a gtk frontend to CUPS" >$SPEC
echo "Name: gtklp" >>$SPEC
echo "Version: $VERSION" >>$SPEC
echo "Release: $REV" >>$SPEC
echo "License: GPL" >>$SPEC
echo "Vendor: SirTobi" >>$SPEC
echo "Group: Utilities/Printing" >>$SPEC
echo "Source: http://www.stud.uni-hannover.de/~sirtobi/gtklp/files/gtklp-%{version}.src.tar.gz" >>$SPEC
echo "BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root" >>$SPEC
echo "BuildPrereq: cups-devel > 1.1 gtk+-devel" >>$SPEC
echo "Requires: cups > 1.1" >>$SPEC
echo "%description" >>$SPEC
echo "a gtk frontend to CUPS" >>$SPEC
echo "" >>$SPEC
echo "%prep" >>$SPEC
echo "%setup" >>$SPEC
echo "" >>$SPEC
echo "%build" >>$SPEC
echo "./configure --prefix=%{_prefix}" >>$SPEC
echo "make" >>$SPEC
echo "" >>$SPEC
echo "%install" >>$SPEC
echo "rm -rf %{buildroot}" >>$SPEC
echo "make install prefix=%{buildroot}%{_prefix}" >>$SPEC
echo "strip %{buildroot}%{_prefix}/bin/* || :" >>$SPEC
echo "mkdir -p %{buildroot}%{_docdir}/gtklp-%{version}" >>$SPEC
echo "cp AUTHORS BUGS ChangeLog COPYING NEWS README TODO USAGE %{buildroot}%{_docdir}/gtklp-%{version}/" >>$SPEC
echo "" >>$SPEC
echo "%clean" >>$SPEC
echo "rm -rf %{buildroot}" >>$SPEC
echo "" >>$SPEC
echo "%files" >>$SPEC
echo "%defattr(-,root,root)" >>$SPEC
echo "%{_prefix}" >>$SPEC
echo "" >>$SPEC
echo "%changelog" >>$SPEC
cat ChangeLog >>$SPEC

echo "autogen..."
/bin/sh autogen.sh

echo "Creating ../packages..."
mkdir -p ../packages
rm -rf ../packages/*
echo "Creating ../packages/tmp..."
mkdir -p ../packages/tmp
rm -rf ../packages/tmp/*
echo "Creating ../packages/tmp/usr/doc/gtklp-$VERSION..."
mkdir -p ../packages/tmp/usr/doc/gtklp-$VERSION
rm -rf ../packages/tmp/usr/doc/gtklp-$VERSION/*

echo "Copying spec-file..."
cp $SPEC ../packages/

echo "Building source-package..."
mkdir -p ../packages/tmp/gtklp-$VERSION
cp -R . ../packages/tmp/gtklp-$VERSION/
cd ../packages/tmp/
tar czf ../gtklp-$VERSION.src.tar.gz gtklp-$VERSION
rm -rf gtklp-$VERSION
cd ../../src

echo "Building gtklp..."
./configure --prefix=/usr
make
make install prefix=$PWD/../packages/tmp/usr
strip $PWD/../packages/tmp/usr/bin/*

echo "Filling doc"
cp $ALLDOCS ../packages/tmp/usr/doc/gtklp-$VERSION/

echo "Creating SlackWare Package Files"
mkdir ../packages/tmp/install
echo "" >../packages/tmp/install/doinst.sh
echo "gtklp: gtklp gtklpq                                " >../packages/tmp/install/slack-desc
echo "gtklp:                                             " >>../packages/tmp/install/slack-desc
echo "gtklp: 'gtklp' is a graphical frontend for cups.   " >>../packages/tmp/install/slack-desc
echo "gtklp: 'gtklpq' is a graphical queue-tool for cups," >>../packages/tmp/install/slack-desc
echo "gtklp: inspired by lqv from novell.                " >>../packages/tmp/install/slack-desc
echo "gtklp:                                                                                     " >>../packages/tmp/install/slack-desc
echo "gtklp: You can get Cups at www.cups.org.           " >>../packages/tmp/install/slack-desc
echo "gtklp: You can get the newest version of GtkLP at  " >>../packages/tmp/install/slack-desc
echo "gtklp: www.stud.uni-hannover.de/~sirtobi/gtklp/    " >>../packages/tmp/install/slack-desc
echo "gtklp:                                             " >>../packages/tmp/install/slack-desc
echo "gtklp:                                             " >>../packages/tmp/install/slack-desc
echo "gtklp:                                             " >>../packages/tmp/install/slack-desc
echo "gtklp:                                             " >>../packages/tmp/install/slack-desc
echo "gtklp:                                             " >>../packages/tmp/install/slack-desc

echo "Please enter root-password to give the right ownerships"
su -c "find ../packages/tmp/ -exec chown root.root {} \;;find ../packages/tmp/ -exec chmod 444 {} \;; find ../packages/tmp/ -type d -exec chmod 755 {} \;;chmod 755 ../packages/tmp/usr/bin/*"

echo "Creating Slack-Packages old style"
cd ../packages/tmp
tar czf ../gtklp.tgz .

echo "Creating Slack-Packages new style"
cd ..
cp gtklp.tgz gtklp-$VERSION-$PROC-$REV.tgz
cd ../src

GROUP=`groups | cut -d" " -f1`
echo "Please enter root-password to remove ownerships"
su -c "find ../packages/tmp/ -exec chown $USER.$GROUP {} \;"

rm -rf ../packages/tmp

echo "Build rpms..."
mkdir -p $RPMDIR/BUILD
mkdir -p $RPMDIR/SRPMS
mkdir -p $RPMDIR/RPMS/i386
mkdir -p $RPMDIR/SOURCES
cp ../packages/gtklp-$VERSION.src.tar.gz $RPMDIR/SOURCES

rpmbuild --nodeps -ba $SPEC

cp $RPMDIR/RPMS/$PROC/gtklp-$VERSION-$REV.$PROC.rpm ../packages/
cp $RPMDIR/SRPMS/gtklp-$VERSION-$REV.src.rpm ../packages/

# Po-File
mkdir -p ../packages/lang
cp po/*.po ../packages/lang
