#!/bin/bash
# 2009 Etersoft www.etersoft.ru
# Author: Vitaly Lipatov <lav@etersoft.ru>
# Public domain

# return local path to publish srpm
get_etersoft_srpm_path()
{
	local SOURCE BSOURCE BNSOURCE
	local ALPHA=$2
	local SOURCEFTP=$(eval_spec $1 | sed -e "s|^Source0:|Source:|g" | get_var "Source")

	if [ -z "$SOURCEFTP" ] ; then
		build_rpms_name $1
		SOURCEFTP=$(cat $1 | get_var "#Source" | subst_namever)
	fi

	[ -n "$SOURCEFTP" ] || fatal "Can't get Source from spec"

	# drop tarball name
	SOURCEFTP=$(dirname "$SOURCEFTP")

	# FIXME: pass foreign path, needs to handle proto:// separately from ftp.eter:/path
	if ! rhas "$SOURCEFTP" "$COMPANYFTP" && ! rhas "$SOURCEFTP" ":" && ! rhas "$SOURCEFTP" "^/"; then
		# if source if not known target, or not ssh dest, or local local path,
		# just return empty
		# TODO: we can use table for URL translating
		return
	fi

	# remove tarball if exists at the end of line (our struct)
	rhas $SOURCEFTP "tarball\$" && SOURCEFTP=$(dirname "$SOURCEFTP")
	# translate ftp to local path
	SOURCE=$(echo "$SOURCEFTP" | sed -e "s|.*://.*$COMPANYFTP|$TARGETFTPBASE|g")

	# rewrite V.E.R./sources with $ALPHA/sources if $ALPHA exists
	if [ -n "$ALPHA" ] ; then
		BSOURCE=$(dirname $SOURCE)
		BNSOURCE=$(basename $BSOURCE)
		SOURCE=$(dirname $BSOURCE)/$ALPHA/sources
	else
		# if run with default arg
		ALPHA=unstable
		BSOURCE=$(dirname $SOURCE)
		BNSOURCE=$(basename $BSOURCE)
		if [ "$BNSOURCE" = "last" ] || rhas "$BNSOURCE" "^[0-9.]+" ; then
			SOURCE=$(dirname $BSOURCE)/$ALPHA/sources
		fi
	fi

	echo $SOURCE
}

set_last_link()
{
	local LASTNAME="$1/../last"
	# do not change last if testing publish
	rhas "$1" /testing/sources && return
	# do not change last if unstable publish
	rhas "$1" /unstable/sources && return
	# do not create last link to last
	[ "$2" = "last" ] && return
	rm -f "$LASTNAME" && ln -s "$2" "$LASTNAME"
}
