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

EAPI=8

PHP_EXT_NAME="redis"
USE_PHP="php8-1 php8-2 php8-3"
PHP_EXT_NEEDED_USE="json(+)?,session(-)?"
MY_P="${PN/pecl-/}-${PV/_rc/RC}"
PHP_EXT_PECL_FILENAME="${MY_P}.tgz"
PHP_EXT_S="${WORKDIR}/${MY_P}"

inherit php-ext-pecl-r3

DESCRIPTION="PHP extension for interfacing with Redis"
LICENSE="PHP-3.01"
SLOT="0"
KEYWORDS="amd64 ~arm ~arm64"
IUSE="igbinary +json lz4 +session zstd"

DEPEND="
	igbinary? ( >=dev-php/igbinary-3.0.1-r1[php_targets_php8-1(-)?,php_targets_php8-2(-)?,php_targets_php8-3(-)?] )
	lz4? ( app-arch/lz4:= )
	zstd? ( app-arch/zstd:= )
"
RDEPEND="${DEPEND}
	!dev-php/pecl-redis:7"

# The test suite requires network access.
RESTRICT=test

S="${WORKDIR}/${MY_P}"

src_configure() {
	local PHP_EXT_ECONF_ARGS=(
		--enable-redis
		--disable-redis-lzf
		--disable-redis-msgpack
		$(use_enable igbinary redis-igbinary)
		$(use_enable json redis-json)
		$(use_enable lz4 redis-lz4)
		$(use_with lz4 liblz4)
		$(use_enable session redis-session)
		$(use_enable zstd redis-zstd)
		$(use_with zstd libzstd)
	)
	php-ext-source-r3_src_configure
}

src_test() {
	local slot
	for slot in $(php_get_slots); do
		php_init_slot_env "${slot}"
		# Run tests for Redis class
		${PHPCLI} -d extension=modules/redis.so \
				  tests/TestRedis.php \
				  --class Redis \
				  --host ${PECL_REDIS_HOST} || die 'test suite failed'
	done
}