# fedora spec file for php-punic
#
# Copyright (c) 2012-2019 Shawn Iwinski <shawn.iwinski@gmail.com>
#               2020-2022 Christopher Engelhard <ce@lcts.de>
# License: MIT
#
# Please preserve the changelog entries

# package and composer name
%global vendor      punic
%global project     punic

# PHP namespace and directory
%global ns_project  Punic
%global ns_dir      %( echo '%{ns_project}' | sed  's|\\\\|\/|g' )

# Github
%global gh_vendor   punic
%global gh_project  punic
%global commit      6e14078c3848030a69401125b2665f8bc84ba386
%global scommit     %(c=%{commit}; echo ${c:0:7})

# tests
%bcond_without tests

#-- PREAMBLE ------------------------------------------------------------------#
Name:           php-punic3
Version:        3.7.0
Release:        1%{?dist}
Summary:        PHP-Unicode CLDR Toolkit

# Code is MIT, data is Unicode
License:       MIT and Unicode
URL:           http://punic.github.io/
# Since github tarballs are lacking the tests, source is created via a local git checkout instead.
# Use ./makesrc.sh in the same directory as the specfile to generate the source archive
Source0:        %{name}-%{version}-%{scommit}.tgz
Source1:        makesrc.sh

BuildArch:     noarch

# for the autoloader
Requires:	php-composer(fedora/autoloader)

# from composer.json
Requires:	php(language) >= 5.3

# from phpcompatinfo
Requires:	php-date
Requires:	(php-mbstring or php-iconv)
Requires:	php-intl
Requires:	php-json
Requires:	php-pcre
Requires:	php-spl

# for the executable
Requires:  %{_bindir}/php

# for autoloader check
BuildRequires:  php-composer(fedora/autoloader)
BuildRequires:  %{_bindir}/php
BuildRequires:  php(language) >= 5.3.0

%if %{with tests}
# for tests
BuildRequires: phpunit9
BuildRequires:	php-date
BuildRequires:	(php-mbstring or php-iconv)
BuildRequires:	php-intl
BuildRequires:	php-json
BuildRequires:	php-pcre
BuildRequires:	php-spl
%endif

# composer provides
Provides:       php-%{vendor}-%{project}3 = %{version}
Provides:       php-composer(%{vendor}/%{project}) = %{version}

%description
PHP-Unicode CLDR Toolkit

Punic is a PHP library using the CLDR data to help you localize various
variables like numbers, dates, units, lists, ...

For full API reference see the APIs reference [1].

Autoloader: %{phpdir}/Punic/autoload.php

[1] http://punic.github.io/docs


#-- PREP, BUILD & INSTALL -----------------------------------------------------#
%prep
%autosetup -p1 -n %{gh_project}-%{commit}

%build
: Nothing to build

%install
: copy source files
mkdir -p %{buildroot}%{_bindir}
install -pm 0755 bin/punic-data %{buildroot}%{_bindir}/

mkdir -p   %{buildroot}%{_datadir}/php/%{ns_dir}
cp -pr src/* %{buildroot}%{_datadir}/php/%{ns_dir}

mkdir -p   %{buildroot}%{_datadir}/%{name}
mv %{buildroot}%{_datadir}/php/%{ns_dir}/data %{buildroot}%{_datadir}/%{name}
ln -s \
    $(realpath --canonicalize-missing --relative-to='%{_datadir}/php/%{ns_dir}' '%{_datadir}/%{name}') \
    %{buildroot}%{_datadir}/php/%{ns_dir}/data

: Generate an autoloader
cat <<'EOF' | tee %{buildroot}%{_datadir}/php/%{ns_dir}/autoload.php
<?php
require_once '%{_datadir}/php/Fedora/Autoloader/autoload.php';

// classes
\Fedora\Autoloader\Autoload::addPsr4('%{ns_project}', __DIR__);

// files & dependencies
\Fedora\Autoloader\Dependencies::required(array(
  // no mandatory dependencies
));

\Fedora\Autoloader\Dependencies::optional(array(
   // no optional dependencies
));
EOF

%check
: Check the autoloader
%{_bindir}/php -r "
    require_once '%{buildroot}%{_datadir}/php/%{ns_dir}/autoload.php';
    exit(
        class_exists('%{ns_project}\Data')
        ? 0 : 1
    );
"

%if %{with tests}
: Create a autoloader for tests
mkdir vendor
cat << 'EOF' | tee vendor/autoload.php
<?php
require_once '%{buildroot}%{_datadir}/php/%{ns_dir}/autoload.php';

\Fedora\Autoloader\Autoload::addPsr4('%{ns_project}\Test', dirname(__DIR__).'/tests');

EOF

: Run phpunit tests
# upstream's bootstrap.php does not load vendor/autoload.php, so we prepend it manually
export PUNIC_TEST_DATADIR="src/data" && %{_bindir}/phpunit9 --verbose --prepend vendor/autoload.php
%endif

%files
%{!?_licensedir:%global license %%doc}
%license LICENSE.txt
%license UNICODE-LICENSE.txt
%license LIBPHONENUMBER-LICENSE.txt
%doc *.md
%doc composer.json
%{_datadir}/php/%{ns_dir}
%{_datadir}/%{name}
%{_bindir}/punic-data

%changelog
* Wed Aug 10 2022 Christopher Engelhard <ce@lcts.de> - 3.7.0-1
- Initial package