#!/usr/bin/env bash
# Build Path: /app/.heroku/php

OUT_PREFIX=$1

# fail hard
set -o pipefail
# fail harder
set -eu

source $(dirname $BASH_SOURCE)/../../_util/include/manifest.sh

ZEND_MODULE_API_VERSION=$(basename $(dirname $0))
ZEND_MODULE_API_VERSION=${ZEND_MODULE_API_VERSION#no-debug-non-zts-}

case ${ZEND_MODULE_API_VERSION} in
	20180731)
		series=7.3
		;;
	20190902)
		series=7.4
		;;
	20200930)
		series=8.0
		;;
	20210902)
		series=8.1
		;;
	20220829)
		series=8.2
		;;
	20230831)
		series=8.3
		;;
	*)
		echo "Unsupported PHP/Zend Module API version: ${ZEND_MODULE_API_VERSION}"
		exit 1
		;;
esac

ext_dir=${OUT_PREFIX}/lib/php/extensions/no-debug-non-zts-${ZEND_MODULE_API_VERSION}
bin_dir=${OUT_PREFIX}/bin

dep_formula=${0#$WORKSPACE_DIR/}
dep_name=$(basename $BASH_SOURCE)
dep_version=${dep_formula##*"/${dep_name}-"}
dep_package=ext-${dep_name}-${dep_version}
dep_manifest=${dep_package}_php-$series.composer.json

echo "-----> Packaging ${dep_package}..."
echo "FYI: Blackfire API reports latest version as $(curl -I -A "Heroku" -L -s https://blackfire.io/api/v1/releases/probe/php/linux/$(dpkg --print-architecture)/${series/\./} | grep -i 'X-Blackfire-Release-Version: ' | sed "s%X-Blackfire-Release-Version: %%i" | sed s%.$%%)"

curl -L -o probe.tar.gz "https://packages.blackfire.io/binaries/blackfire-php/${dep_version}/blackfire-php-linux_$(dpkg --print-architecture)-php-${series/\./}.tar.gz"

mkdir -p ${ext_dir}
tar -zxf probe.tar.gz
cp blackfire-${ZEND_MODULE_API_VERSION}.so ${ext_dir}/blackfire.so
rm probe.tar.gz blackfire-${ZEND_MODULE_API_VERSION}.so blackfire-${ZEND_MODULE_API_VERSION}.sha

MANIFEST_REQUIRE="${MANIFEST_REQUIRE:-"{\"heroku-sys/php\":\"${series}.*\",\"heroku-sys/blackfire\":\">=2.0.0\"}"}"
MANIFEST_CONFLICT="${MANIFEST_CONFLICT:-"{}"}"
MANIFEST_REPLACE="${MANIFEST_REPLACE:-"{}"}"
MANIFEST_PROVIDE="${MANIFEST_PROVIDE:-"{}"}"
MANIFEST_EXTRA="${MANIFEST_EXTRA:-"{}"}"

python $(dirname $BASH_SOURCE)/../../_util/include/manifest.py "heroku-sys-php-extension" "heroku-sys/ext-${dep_name}" "$dep_version" "${dep_formula}.tar.gz" "$MANIFEST_REQUIRE" "$MANIFEST_CONFLICT" "$MANIFEST_REPLACE" "$MANIFEST_PROVIDE" "$MANIFEST_EXTRA" > $dep_manifest

print_or_export_manifest_cmd "$(generate_manifest_cmd "$dep_manifest")"
