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

EAPI="8"

MY_PN="MaxMind-DB-Reader-php"
MY_P="${MY_PN}-${PV}"
S="${WORKDIR}/${MY_P}"
PHP_EXT_S="${S}/ext"
PHP_EXT_NAME="maxminddb"
PHP_EXT_OPTIONAL_USE="extension"

USE_PHP="php8-1 php8-2 php8-3"

inherit php-ext-source-r3

DESCRIPTION="PHP reader for the MaxMind database format"
HOMEPAGE="https://github.com/maxmind/MaxMind-DB-Reader-php"
SRC_URI="https://github.com/maxmind/${MY_PN}/archive/v${PV}.tar.gz -> ${MY_P}.tar.gz"

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 ~x86"
IUSE="extension test"
RESTRICT="!test? ( test )"

DEPEND="extension? ( dev-libs/libmaxminddb )"
RDEPEND="${DEPEND}"

src_prepare() {
	# We need to call eapply_user ourselves, because it may be skipped
	# if either the "extension" USE flag is not set, or if the user's
	# PHP_TARGETS is essentially empty. In the latter case, the eclass
	# src_prepare does nothing. We only call the eclass phase conditionally
	# because the correct version of e.g. "phpize" may not be there
	# unless USE=extension is set.
	if use extension ; then
		php-ext-source-r3_src_prepare
	else
		default
	fi
}

src_configure() {
	# The eclass phase will try to run the ./configure script even if it
	# doesn't exist (in contrast to the default src_configure), so we
	# need to skip it if the eclass src_prepare (that creates said
	# script) is not run.
	use extension && php-ext-source-r3_src_configure
}

src_compile() {
	# Avoids the same problem as in src_configure.
	use extension && php-ext-source-r3_src_compile
}

src_install() {
	dodoc CHANGELOG.md README.md
	insinto /usr/share/php
	doins -r src/MaxMind
	insinto /usr/share/php/MaxMind/Db
	doins autoload.php

	use extension && php-ext-source-r3_src_install
}

src_test() {
	# The PHP API has its own set of tests that isn't shipped with the
	# release tarballs at the moment (github issues 55).
	use extension && php-ext-source-r3_src_test
}

pkg_postinst() {
	elog "${PN} has been installed in /usr/share/php/MaxMind/Db/."
	elog "To use it in a script, require('MaxMind/Db/autoload.php'),"
	elog "and then most of the examples in the documentation should"
	elog "work without further modification."
}