#!/bin/bash
# 2003-2008, 2012 Etersoft www.etersoft.ru
# Author: Vitaly Lipatov <lav@etersoft.ru>
# Public domain

load_mod git hasher

is_alt()
{
	test -f /etc/altlinux-release
	return $?
}

# Internal
set_target_type()
{
	# check for M51 and so on
	if echo $1 | egrep -q "^M[0-9][0-9].?$" ; then
		MENV=$1
		return 0
	fi
	case "$1" in
		("DD" | "SS" | "EE")
			MENV="$1"
			return 0;
			;;
	esac
	return 1;
}

# no output if not detected
get_type_by_git_branch_name()
{
        # like p5
        if echo $1 | egrep -q "^[pt][0-9].?$" ; then
                get_altdistr_mod $1
                return
        fi

        # like cert6
        if echo $1 | egrep -q "^cert[0-9].?$" ; then
                get_altdistr_mod $1
                return
        fi

        # like 5.1
        if echo $1 | grep -q "^[0-9].[0-9]$" ; then
                get_altdistr_mod $1
                return
        fi

        # like M50P or M41
        if echo $1 | egrep -q "^M[0-9][0-9].?$" ; then
                echo $1
                return
        fi
}

get_type_by_current_branch()
{
        local BRANCH=$(get_current_branch)
        get_type_by_git_branch_name $BRANCH
}

# set BYNARYREPO var by MENV in arg (M50 or 5.0)
set_binaryrepo()
{
	BINARYREPO="sisyphus"
	if [ -n "$BINARYREPONAME" ] ; then
		BINARYREPO="$BINARYREPONAME"
		MENV="$(get_altdistr_mod $BINARYREPO)"
		MENVARG="-$MENV"
		# already was in parse_cmd_pre, but call in again for refill with updated $MENV
		detect_target_env
		return
	fi
	test -z "$1" && return
	BINARYREPO="`get_altdistr_version $1`"
}

# M50 -> 5.0, M60P -> p6
get_altdistr_version()
{
	echo "$1" | sed -e "s|M\([5-9]\)0C|cert\1|g" -e "s|M\([5-9]\)0P|p\1|g" -e "s|M\([5-9]\)0T|t\1|g" -e "s|M\([0-9]\)\([0-9]\)|\1\.\2|g" -e "s|SS|sisyphus|g" -e "s|DD|daedalus|g" -e "s|Sisyphus|sisyphus|g"
}

# 5.0 -> M50, p6 -> M60P
get_altdistr_mod()
{
	echo "$1" | sed -e "s|\([0-9]\)\.\([0-9]\)|M\1\2|g" -e "s|Sisyphus|SS|gi" -e "s|p\([5-9]\)|M\10P|g" -e "s|cert\([6-9]\)|M\10C|g" -e "s|t\([6-9]\)|M\10T|g"
}

# TODO: include in sisyphus_check
# Проверяем, соответствует ли релиз пакетов указанному в MENV
pkg_release_check()
{
	local STREL=$RELEASEPREFIX
	[ -z "$KORINFTARGETRELEASE" ] || STREL=$KORINFTARGETRELEASE

	if [ "$MENV" = "SS" ] || [ "$MENV" = "DD" ] ; then
		for i in $@ ; do
			if [ -z "${i/*$STREL[0-9].M[0-9][0-9]*/}" ] ; then
				# Значит не тот релиз
				fatal "Incorrect release in $i package: was prepared for Sisyphus"
			fi
		done
		return
	fi
	for i in $@ ; do
		if [ -n "${i/*$STREL[0-9].$MENV*/}" ] ; then
			# Значит не тот релиз
			fatal "Incorrect release in $i package: was prepared for $MENV"
		fi
	done
}

# TODO: remove for all, use $ rpmreqs instead
# copied from aptU
get_rpmpkg_requires()
{
	rpmquery --requires $@ | cut -f1 -d" " | sed -e "s|([A-Z].*||g" | grep -v "^rpmlib" | sort -u
}

