#!/bin/bash

cd "$( dirname "$0" )"

clear
cat <<EOF
This script generates RPM of TDE from source tarball.
Please choose a TDE component to build.

EOF

# Checks RPMBUILD environment
if [ $( rpm -E "%{rhel}" ) = "%{rhel}" ] && [ $( rpm -E "%{fedora}" ) = "%{fedora}" ]; then
	cat <<EOF
Error: RPM macro %rhel or %fedora must be set to the distribution version to build !
E.g:
%rhel 6 
or
%fedora 15
EOF
	exit 1
fi

select COMP in $( cut -f1 "components.txt" | grep -v "^#" ) ; do
	# Gets package version from 'components.txt' file
	VERSION=$( awk '{ if ($1 == "'${COMP}'") { print $2; } }' components.txt )
	
	# If no version is set in text file, get version number from source tarball name
	if [ -z "${VERSION}" ]; then
		set $( cd "${COMP}"; echo ${COMP##*/}*.tar.gz)
		if [ $# -gt 1 ]; then
			select VERSION in $*; do break; done
		elif [ -r "${COMP}/$1" ]; then
			VERSION="$1"
		else
			echo "No source tarball found for '${COMP}' !"
			continue
		fi
		VERSION="${VERSION##${COMP##*/}-}"
		VERSION="${VERSION%%.tar.gz}"
	# If version is defined in spec file: appends the date
	else
		VERSION="${VERSION}.$(date +%Y%m%d)"
	fi
	
	# Chooses a spec file (if many)
	set $( cd "${COMP}"; echo *.spec )
	if [ $# -gt 1 ]; then
		select SPEC in $*; do break; done
	elif [ -r "${COMP}/$1" ]; then
		SPEC="$1"
	else
		echo "Fatal: no spec file found !"
		exit 2
	fi
	
	cat <<EOF

About to build '${COMP}':
  Version: '${VERSION}'
  Spec file: '${SPEC}'

Press ENTER to build, or CTRL+C to abort.
EOF
	read rep
	
	# Specific prefix for installation of some components
	case "${COMP##*/}" in
		"qt3") PREFIX="/usr";;
	esac
	
	set -x
	(
	rpmbuild -ba \
		--define "_sourcedir ${PWD}/${COMP}" \
		--define "_prefix ${PREFIX:-/opt/trinity}" \
		--define "version ${VERSION:-3.5.13}" \
		${COMP}/${SPEC} || exit 1
	) 2>&1 | tee /tmp/log
	set +x
done

