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

EAPI=8

inherit bash-completion-r1 git-r3

DESCRIPTION="Dependency manager for PHP"
HOMEPAGE="https://getcomposer.org https://github.com/composer/composer"

# To regenerate the vendor tarball:
#   git clone -b ${PV} https://github.com/composer/composer ${P}
#   ( cd ${P} && composer install --no-dev --optimize-autoloader )
#   XZ_OPT='-T0 -9' tar -caf ${P}-vendor.tar.xz ${P}/vendor/
SRC_URI="https://github.com/vklimovs/portage-overlay/releases/download/${P}-vendor.tar.xz/${P}-vendor.tar.xz"

EGIT_REPO_URI="https://github.com/${PN}/${PN}"
EGIT_COMMIT="82a2fbd1372a98d7915cfb092acf05207d9b4113"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"
IUSE="doc"

RDEPEND=">=dev-lang/php-8.2:*[cli,phar]"
BDEPEND="${RDEPEND}"

DOCS=( CHANGELOG.md README.md )

src_unpack() {
	git-r3_src_unpack
	unpack "${P}-vendor.tar.xz"
}

src_compile() {
	php -d memory_limit=-1 -d phar.readonly=0 bin/compile || die
	mv composer.phar composer || die
	php composer completion bash > completion.bash || die
}

src_test() {
	if has usersandbox ${FEATURES} || has network-sandbox ${FEATURES}; then
		ewarn "Skipping smoke test: requires writable user namespaces and"
		ewarn "packagist.org network access, both denied by"
		ewarn "FEATURES=usersandbox / FEATURES=network-sandbox."
		return 0
	fi

	local td="${T}/integration-test"
	mkdir "${td}" || die
	cd "${td}" || die
	php "${S}/composer" init \
		--no-interaction \
		--type=project \
		--name='gentoo/test' \
		--description='Composer ebuild integration test' \
		--license='GPL-3.0-or-later' \
		--require='symfony/console:*' || die
	php "${S}/composer" update --no-interaction --no-progress --prefer-dist || die
	php "${S}/composer" validate --no-interaction || die
}

src_install() {
	dobin composer
	newbashcomp completion.bash composer
	einstalldocs
	use doc && dodoc -r doc
}