#!/bin/sh
#
# Copyright (C) 2023  Etersoft
# Copyright (C) 2023  Vitaly Lipatov <lav@etersoft.ru>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#

load_helper epm-sh-altlinux

__epm_repo_pkgadd_alt()
{
	local archlist="i586 x86_64 aarch64 noarch"

	local REPO_DIR="$1"
	shift
	[ -d "$REPO_DIR" ] || fatal "Can't find repo dir $REPO_DIR."

	# default name
	REPO_NAME="addon"
	# detect if already exists
	for arch in $archlist ; do
		local rd="$(echo $REPO_DIR/$arch/RPMS.*)"
		[ -d "$rd" ] && REPO_NAME="$(echo "$rd" | sed -e 's|.*\.||')" && break
	done

	[ -n "$1" ] || fatal "Missed package name"

	while [ -s "$1" ] ; do
		arch="$(epm print arch from filename "$1")" || fatal
		epm checkpkg "$1" || fatal
		cp -v "$1" $REPO_DIR/$arch/RPMS.$REPO_NAME || fatal
		shift
	done

}


__epm_repo_pkgdel_alt()
{
	local archlist="i586 x86_64 aarch64 noarch"

	local REPO_DIR="$1"
	shift
	[ -d "$REPO_DIR" ] || fatal "Can't find repo dir $REPO_DIR."

	[ -n "$1" ] || fatal "Missed package name"

	# default name
	REPO_NAME="addon"
	# detect if already exists
	for arch in $archlist ; do
		local rd="$(echo $REPO_DIR/$arch/RPMS.*)"
		[ -d "$rd" ] && REPO_NAME="$(echo "$rd" | sed -e 's|.*\.||')" && break
	done

	while [ -s "$1" ] ; do
		for arch in $archlist ; do
			local rd="$REPO_DIR/$arch/RPMS.$REPO_NAME"
			for i in $rd/$1* ; do
				[ "$1" = "$(epm print name for package $i)" || continue
				rm -v $rd/$1*
			done
		done
		shift
	done

}


__epm_repo_pkgupdate_alt()
{
	local dir="$1"
	shift
	for i in "$@" ; do
		pkg="$(epm print name for package $i)" || fatal
		__epm_repo_pkgdel_alt "$dir" $pkg
	done
	__epm_repo_pkgadd_alt "$dir" "$@"
}



epm_repo_pkgadd()
{

case $PMTYPE in
	apt-rpm)
		__epm_repo_pkgadd_alt "$@"
		;;
	*)
		fatal "Have no suitable command for $PMTYPE"
		;;
esac

}


epm_repo_pkgupdate()
{

case $PMTYPE in
	apt-rpm)
		__epm_repo_pkgupdate_alt "$@"
		;;
	*)
		fatal "Have no suitable command for $PMTYPE"
		;;
esac

}


epm_repo_pkgdel()
{

case $PMTYPE in
	apt-rpm)
		__epm_repo_pkgdel_alt "$@"
		;;
	*)
		fatal "Have no suitable command for $PMTYPE"
		;;
esac

}