#!/bin/sh
# 2006 (c) Etersoft www.etersoft.ru
# Author: Vitaly Lipatov <lav@etersoft.ru>
# Public domain
# $Id: rpmrb,v 1.20 2007/06/30 20:19:52 lav Exp $
# 
#    !
#  ,
# ,        :
# rpmrb   []
#      2.6.1 (), 2.6 (major)  .1 (minor)
#    alt[]

REMOTE=
if [ "$1" = "-r" ] ; then
	REMOTE=$1
	shift
fi
SPEC=$1
VER=$2
REL=$3
#echo $VER

if [ "$1" = "-h" ]; then
	echo "rpmrb spec [vermajor][.verminor] [rel] - update spec to vermajor.verminor version, build alt%rel release"
	exit 0
fi


. /etc/rpm/etersoft-build-functions

# Set release
test -z "$REL" && REL=1

# Set version
if [ -n "$VER" ] ; then
	VERMAJOR=`echo $VER | sed -e "s|\([0-9]*\.[0-9]*\)\..*|\1|"`
	VERMINOR=`echo $VER | sed -e "s|^[0-9]*\.[0-9]*||;s|^\.||"`
	if [ -z ${VER/.*/} ] ; then
		VERMAJOR=
	fi

	#echo major=$VERMAJOR minor=$VERMINOR
	#exit 1
	test -e "$SPEC" || fatal "use with spec"
	MAJORMACROS=`grep "\%define[[:space:]]\(\|ver_\)major" $SPEC | sed -e "s|.*[[:space:]]\(.*major\).*|\1|"`
	if [ -n "${MAJORMACROS}" ] ; then
		# Change major define
		test -n "$VERMAJOR" && subst "s|\(\%define[[:space:]]$MAJORMACROS[[:space:]]\).*|\1$VERMAJOR|" $SPEC
		# Change version if VERMINOR is defined
		if [ -n "$VERMINOR" ] ; then
			set_var $SPEC Version %$MAJORMACROS.$VERMINOR || fatal "Error with get version from spec"
		else
			set_var $SPEC Version %$MAJORMACROS || fatal "Error with get version from spec"
		fi
	else
		set_var $SPEC Version $VER || fatal "Error with get version from spec"
	fi

	set_release $SPEC alt$REL
	add_changelog -e "- new version $VER (with rpmrb script)" $SPEC
fi

rpmgs $1 || fatal "Error with get source"
rpmbsh $REMOTE -i $1 || fatal "Error with build in hasher"
rpmbs -u $1 || fatal "Error with upload"
exit 0
