# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit rpm

DESCRIPTION="CryptoPro Browser Plugin (with additional bundled stuff)"

BASE_SRC_URI="https://cryptopro.ru/sites/default/files/products/cades/current_release_2_0/cades-linux"
SRC_URI="
	x86? ( ${BASE_SRC_URI}-ia32.tar.gz -> ${P}_x86.tar.gz )
	amd64? ( ${BASE_SRC_URI}-amd64.tar.gz -> ${P}_amd64.tar.gz )
	arm64? ( ${BASE_SRC_URI}-arm64.tar.gz -> ${P}_arm64.tar.gz )
	arm? ( ${BASE_SRC_URI}-armhf.tar.gz -> ${P}_arm.tar.gz )
	mips? ( ${BASE_SRC_URI}-mipsel.tar.gz -> ${P}_mipsel.tar.gz )
"
# ${P}_${ARCH}.tar.gz
# pkgdev doesn't support ${ARCH} ATM and throws an error

HOMEPAGE="https://cryptopro.ru/products/csp/downloads"
LICENSE="Crypto-Pro"
RESTRICT="bindist mirror strip"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~mips ~x86"

RDEPEND="
	app-crypt/cprocsp
	!>=app-crypt/cprocsp-5.0.12900
"
DEPEND="${RDEPEND}"
BDEPEND="app-arch/rpm"

QA_PREBUILT="opt/cprocsp/*"

_get_arch() {
	if [[ -n "${_got_arch}" ]]; then
		echo ${_got_arch};
		return
	fi
	local _got_arch
	case $(uname -m) in
		x86_64)
			_got_arch="amd64"
			;;
		i*86)
			_got_arch="ia32"
			;;
		armv7*)
			_got_arch="armhf"
			;;
		aarch64)
			_got_arch="arm64"
			;;
		mips*)
			_got_arch="mipsel"
			;;
	esac
	export _got_arch
	echo "${_got_arch}"
}

pkg_setup() {
	if [[ "${MERGE_TYPE}" != "binary" ]]; then
		ewarn "If you will get checksums mismatch then upstream, probably discontinued separate 'browser plugin' packages"
		ewarn "Upgrade app-crypt/cprocsp to >= 5.0.12900 (it includes browser plugin)"
		ewarn "Also, place an issue on overlay's issue tracker on GitHub, please"
	fi
}

src_unpack() {
	local uname_m=$(uname -m)
	local arch=$(_get_arch)
	default
	mkdir -p "${S}"
	cd "${S}"
	PKGS=( # Plugin
		cprocsp-pki-plugin
	)
	ADD_PKGS=( # Additional packages
		cprocsp-pki-cades
		cprocsp-pki-phpcades
	)
	for f in ${PKGS[@]} ${ADD_PKGS[@]}; do
		local a=${arch}
		find "../cades-linux-${arch}" -name "${f}*${a}.rpm" | while read r; do rpm_unpack "./${r}"; done
	done
}

#src_prepare() {
#	default
#}

src_install() {
	local arch=$(_get_arch)
	insinto /
	doins -r opt etc usr
	exeinto /opt/cprocsp/bin/"${arch}"
	doexe opt/cprocsp/bin/"${arch}"/*
	# exeinto /opt/cprocsp/sbin/amd64
	# doexe opt/cprocsp/sbin/amd64/*
	exeinto /opt/cprocsp/lib/"${arch}"
	doexe opt/cprocsp/lib/"${arch}"/*
}