# remirepo/fedora spec file for php-kdyby-events
#
# Copyright (c) 2015-2017 Remi Collet
# License: CC-BY-SA
# http://creativecommons.org/licenses/by-sa/4.0/
#
# Please, preserve the changelog entries
#
%global gh_commit    57edd9259ee9ea3e4fed6a5e5102a54548d8ec50
#global gh_date      20150728
%global gh_short     %(c=%{gh_commit}; echo ${c:0:7})
%global gh_owner     Kdyby
%global gh_project   Events
%global ns_vendor    %{gh_owner}
%global ns_project   %{gh_project}
%global pk_vendor    kdyby
%global pk_project   events
%global php_home     %{_datadir}/php
%global with_tests   0%{!?_without_tests:1}

Name:           php-%{pk_vendor}-%{pk_project}
Version:        3.1.2
%global specrel 1
Release:        %{?gh_date:1%{specrel}.%{?prever}%{!?prever:%{gh_date}git%{gh_short}}}%{!?gh_date:%{specrel}}%{?dist}
Summary:        Events for Nette Framework

Group:          Development/Libraries
License:        BSD or GPLv2 or GPLv3
URL:            https://github.com/%{gh_owner}/%{gh_project}
Source0:        %{name}-%{version}-%{gh_short}.tgz
# pull a git snapshot to get test sutie
Source1:        makesrc.sh

BuildArch:      noarch
BuildRequires:  php-fedora-autoloader-devel
%if %{with_tests}
BuildRequires:  php-reflection
BuildRequires:  php-pcre
BuildRequires:  php-spl
BuildRequires:  php-composer(nette/di) <  3
BuildRequires:  php-composer(nette/di) >= 2.4.8
BuildRequires:  php-composer(nette/utils) <  3
BuildRequires:  php-composer(nette/utils) >= 2.4.5
BuildRequires:  php-composer(nette/reflection) <  3
BuildRequires:  php-composer(nette/reflection) >= 2.3
BuildRequires:  php-composer(doctrine/common) <  3
BuildRequires:  php-composer(doctrine/common) >= 2.5.0
BuildRequires:  php-composer(%{pk_vendor}/strict-objects) >= 1.0
BuildRequires:  php-composer(%{pk_vendor}/strict-objects) <  2
# From composer.json, "require-dev": {
#               "nette/application": "^2.4@dev",
#               "nette/bootstrap": "^2.4@dev",
#               "nette/caching": "^2.5@dev",
#               "nette/security": "^2.4@dev",
#               "nette/http": "^2.4.7@dev",
#               "tracy/tracy": "^2.4@dev",
#               "symfony/event-dispatcher": "^3.0 || ^4.0",
#               "nette/tester": "~2.0"
BuildRequires:  php-composer(nette/application) <  3
BuildRequires:  php-composer(nette/application) >= 2.4
BuildRequires:  php-composer(nette/bootstrap) <  3
BuildRequires:  php-composer(nette/bootstrap) >= 2.4
BuildRequires:  php-composer(nette/caching) <  3
BuildRequires:  php-composer(nette/caching) >= 2.5
BuildRequires:  php-composer(nette/security) <  3
BuildRequires:  php-composer(nette/security) >= 2.4
BuildRequires:  php-composer(nette/http) <  3
BuildRequires:  php-composer(nette/http) >= 2.4.7
BuildRequires:  php-composer(tracy/tracy) <  3
BuildRequires:  php-composer(tracy/tracy) >= 2.4
BuildRequires:  php-composer(nette/tester) <  3
BuildRequires:  php-composer(nette/tester) >= 2.0
BuildRequires:  php-composer(symfony/event-dispatcher) <  5
BuildRequires:  php-composer(symfony/event-dispatcher) >= 3.0
%endif

# from composer.json, "require": {
#               "php": "^5.6 || ^7.0",
#               "nette/di": "^2.4.8@dev",
#               "nette/utils": "^2.4.5@dev",
#               "nette/reflection": "^2.4@dev",
#               "kdyby/strict-objects": "^1.0"
Requires:       php(language) >= 5.6
Requires:       php-composer(nette/di) >= 2.4.8
Requires:       php-composer(nette/di) <  3
Requires:       php-composer(nette/utils) >= 2.4.5
Requires:       php-composer(nette/utils) <  3
Requires:       php-composer(nette/reflection) >= 2.4
Requires:       php-composer(nette/reflection) <  3
Requires:       php-composer(%{pk_vendor}/strict-objects) >= 1.0
Requires:       php-composer(%{pk_vendor}/strict-objects) <  2
# To avoid having to provide the compatibility layer
# version 2.5.0 for autoloader
Requires:       php-composer(doctrine/common) >= 2.5.0
Requires:       php-composer(doctrine/common) <  3
# For autoloader
Requires:       php-composer(fedora/autoloader)
# from phpcompatinfo report for version 3.1.1
Requires:       php-reflection
Requires:       php-pcre
Requires:       php-spl

Provides:       php-composer(%{pk_vendor}/%{pk_project}) = %{version}


%description
This extension is here to provide robust events system for Nette Framework.

Autoloader: %{php_home}/%{ns_vendor}/%{ns_project}/autoload.php


%prep
%setup -q -n %{gh_project}-%{gh_commit}

mv src/Doctrine src/%{ns_project}/Doctrine
mv src/Symfony  src/%{ns_project}/Symfony

cat << 'EOF' | tee src/%{ns_project}/autoload.php
<?php
/* Autoloader for %{name} and its dependencies */
require_once '%{php_home}/Fedora/Autoloader/autoload.php';

\Fedora\Autoloader\Autoload::addPsr4('%{ns_vendor}\\%{ns_project}\\', __DIR__);
\Fedora\Autoloader\Dependencies::required([
    __DIR__ . '/exceptions.php',
    '%{php_home}/Doctrine/Common/autoload.php',
    '%{php_home}/Nette/DI/autoload.php',
    '%{php_home}/Nette/Utils/autoload.php',
    '%{php_home}/Nette/Reflection/autoload.php',
    '%{php_home}/Kdyby/StrictObjects/autoload.php',
    __DIR__ . '/Doctrine/compatibility.php',
    __DIR__ . '/Symfony/compatibility.php',
]);
EOF


%build
# Nothing


%install
mkdir -p                 %{buildroot}%{php_home}/%{ns_vendor}
cp -pr src/%{ns_project} %{buildroot}%{php_home}/%{ns_vendor}/%{ns_project}


%check
%if %{with_tests}
export LANG=fr_FR.utf8

: Generate autoloader
mkdir vendor
phpab --output vendor/autoload.php tests/KdybyTests

cat << 'EOF' | tee -a vendor/autoload.php
require_once '%{buildroot}%{php_home}/%{ns_vendor}/%{ns_project}/autoload.php';
\Fedora\Autoloader\Dependencies::required([
    '%{php_home}/Tester/autoload.php',
    '%{php_home}/Nette/Application/autoload.php',
    '%{php_home}/Nette/Bootstrap/autoload.php',
    '%{php_home}/Nette/Caching/autoload.php',
    '%{php_home}/Nette/Security/autoload.php',
    '%{php_home}/Nette/Http/autoload.php',
    '%{php_home}/Tracy/autoload.php',
    [
        '%{php_home}/Symfony4/Component/EventDispatcher/autoload.php',
        '%{php_home}/Symfony3/Component/EventDispatcher/autoload.php',
    ],
]);
EOF

php -r 'require "%{buildroot}%{php_home}/%{ns_vendor}/%{ns_project}/autoload.php";'
php -r 'require "vendor/autoload.php";'

: Run test suite in sources tree
ret=0
for cmd in php php56 php70 php71 php72; do
  if which $cmd; then
    $cmd %{_bindir}/nette-tester --colors 0 -p $cmd -C tests/KdybyTests -s || ret=1
  fi
done
exit $ret
%else
: Test suite disabled
%endif


%files
%{!?_licensedir:%global license %%doc}
%license license.md
%doc README.md
%doc composer.json
%{php_home}/%{ns_vendor}


%changelog
* Wed Dec  6 2017 Remi Collet <remi@remirepo.net> - 3.1.2-1
- Update to 3.1.2

* Mon Dec  4 2017 Remi Collet <remi@remirepo.net> - 3.1.1-1
- Update to 3.1.1
- add dependency on kdyby/strict-objects
- raise dependency on nette/di 2.4.8
- raise dependency on nette/utils 2.4.5

* Thu Nov  9 2017 Remi Collet <remi@remirepo.net> - 3.1.0-2
- fix FTBFS from Koschei, add patch for PHP 7.2

* Mon May 15 2017 Remi Collet <remi@remirepo.net> - 3.1.0-1
- Update to 3.1.0
- add dependency on nette/reflection
- reduce build dependency to only needed components
- raise build dependency on Symfony 3
- raise dependency on nette 2.4

* Tue May  9 2017 Remi Collet <remi@fedoraproject.org> - 3.0.2-2
- switch to fedora/autoloader

* Thu Aug  4 2016 Remi Collet <remi@fedoraproject.org> - 3.0.2-1
- update to 3.0.2 (for nette 2.4)

* Thu Apr 21 2016 Remi Collet <remi@fedoraproject.org> - 2.4.1-1
- update to 2.4.1
- run test suite with both PHP 5 and 7 when available

* Sun Nov  1 2015 Remi Collet <remi@fedoraproject.org> - 2.4.0-1
- initial package