68999a6
# remirepo/fedora spec file for php-cs-fixer
68999a6
#
f54d7fe
# Copyright (c) 2016-2017 Remi Collet
68999a6
# License: CC-BY-SA
68999a6
# http://creativecommons.org/licenses/by-sa/4.0/
68999a6
#
68999a6
# Please, preserve the changelog entries
68999a6
#
7085dbb
%global gh_commit    454ddbe65da6a9297446f442bad244e8a99a9a38
68999a6
%global gh_short     %(c=%{gh_commit}; echo ${c:0:7})
68999a6
#global gh_date      20150717
68999a6
%global gh_owner     FriendsOfPHP
68999a6
%global gh_project   PHP-CS-Fixer
68999a6
%global php_home     %{_datadir}/php
68999a6
%global with_tests   0%{!?_without_tests:1}
68999a6
39af715
# Bundled this fork which is not designed for use outside of php-cs-fixer
39af715
%global gh_diff_owner   PHP-CS-Fixer
04bb467
%global gh_diff_version 1.2.0
04bb467
%global gh_diff_commit  f0ef6133d674137e902fdf8a6f2e8e97e14a087b
39af715
%global gh_diff_short   %(c=%{gh_diff_commit}; echo ${c:0:7})
39af715
04bb467
# TODO: gecko-packages/gecko-php-unit v3 to use phpunit6
04bb467
68999a6
Name:           php-cs-fixer
7085dbb
Version:        2.9.0
b274c62
Release:        2%{?gh_date:.%{gh_date}git%{gh_short}}%{?dist}
68999a6
Summary:        A tool to automatically fix PHP code style
68999a6
68999a6
Group:          Development/Tools
68999a6
License:        MIT
68999a6
URL:            https://github.com/%{gh_owner}/%{gh_project}
68999a6
# git snapshot to get upstream test suite
68999a6
Source0:        %{name}-%{version}-%{gh_short}.tgz
39af715
Source1:        %{name}-diff-%{gh_diff_version}-%{gh_diff_short}.tgz
39af715
Source2:        makesrc.sh
68999a6
68999a6
# Use our autoloader
68999a6
Patch0:         %{name}-autoload.patch
68999a6
68999a6
BuildArch:      noarch
68999a6
%if %{with_tests}
68999a6
# For tests
b29681e
%if 0
b29681e
BuildRequires:  php(language) >= 7.0
b29681e
%global phpunit %{_bindir}/phpunit6
b29681e
%global gecko_min 3.0
b29681e
%global gecko_max 4
b29681e
%else
7c89fe4
BuildRequires:  php(language) >= 5.6
b29681e
%global phpunit %{_bindir}/phpunit
b29681e
%global gecko_min 2.0
b29681e
%global gecko_max 3
b29681e
%endif
68999a6
BuildRequires:  php-tokenizer
7c89fe4
BuildRequires:  php-composer(composer/semver)          <  2
7c89fe4
BuildRequires:  php-composer(composer/semver)          >= 1.4
da4e372
BuildRequires:  php-composer(doctrine/annotations)     <  2
da4e372
BuildRequires:  php-composer(doctrine/annotations)     >= 1.2
b29681e
BuildRequires:  php-composer(gecko-packages/gecko-php-unit) <  %{gecko_max}
b29681e
BuildRequires:  php-composer(gecko-packages/gecko-php-unit) >= %{gecko_min}
b99c6dd
BuildRequires:  php-symfony3-console
b99c6dd
BuildRequires:  php-symfony3-event-dispatcher
b99c6dd
BuildRequires:  php-symfony3-filesystem
b99c6dd
BuildRequires:  php-symfony3-finder
b99c6dd
BuildRequires:  php-symfony3-options-resolver
8943a5d
BuildRequires:  php-composer(symfony/polyfill-php70)   <  2
16bf60d
BuildRequires:  php-composer(symfony/polyfill-php70)   >= 1.0
16bf60d
BuildRequires:  php-composer(symfony/polyfill-php72)   <  2
16bf60d
BuildRequires:  php-composer(symfony/polyfill-php72)   >= 1.4
b99c6dd
BuildRequires:  php-symfony3-process
b99c6dd
BuildRequires:  php-symfony3-stopwatch
da4e372
BuildRequires:  php-composer(sebastian/diff)           <  2
2fc370e
BuildRequires:  php-composer(sebastian/diff)           >= 1.4
44f32fb
BuildRequires:  php-mbstring
44f32fb
BuildRequires:  php-xml
68999a6
BuildRequires:  php-reflection
68999a6
BuildRequires:  php-dom
68999a6
BuildRequires:  php-json
68999a6
BuildRequires:  php-pcre
68999a6
BuildRequires:  php-phar
68999a6
BuildRequires:  php-spl
68999a6
BuildRequires:  php-xml
de937c2
# Missing dependency for Console
b99c6dd
BuildRequires:  php-symfony3-debug
b99c6dd
BuildRequires:  php-symfony3-debug
68999a6
# From composer.json,     "require-dev": {
8943a5d
# NOTICE: listener disabled during test suite
04bb467
#        "johnkary/phpunit-speedtrap": "^1.1 || ^2.0@dev",
cdb5b88
#        "justinrainbow/json-schema": "^5.0",
7085dbb
#        "mikey179/vfsStream": "^1.6",
7085dbb
#        "php-coveralls/php-coveralls": "^2.0",
4830d60
#        "php-cs-fixer/accessible-object": "^1.0",
04bb467
#        "phpunit/phpunit": "^5.7.23 || ^6.4.3",
04bb467
#        "symfony/phpunit-bridge": "^3.2.2 || ^4.0"
da4e372
BuildRequires:  php-composer(justinrainbow/json-schema) <  6
4830d60
BuildRequires:  php-composer(justinrainbow/json-schema) >= 5.0
7085dbb
BuildRequires:  php-composer(mikey179/vfsStream) <  2
7085dbb
BuildRequires:  php-composer(mikey179/vfsStream) >= 1.6
4830d60
BuildRequires:  php-composer(php-cs-fixer/accessible-object) <  2
4830d60
BuildRequires:  php-composer(php-cs-fixer/accessible-object) >= 1.0
b29681e
BuildRequires:  %{phpunit}
7085dbb
BuildRequires:  php-symfony3-phpunit-bridge >= 3.2.2
68999a6
# Autoloader
16bf60d
BuildRequires:  php-fedora-autoloader-devel
68999a6
%endif
68999a6
68999a6
# From composer.json,     "require": {
a645d86
#        "php": "^5.6 || >=7.0 <7.3",
8943a5d
#        "ext-json": "*",
68999a6
#        "ext-tokenizer": "*",
7c89fe4
#        "composer/semver": "^1.4",
8943a5d
#        "doctrine/annotations": "^1.2",
04bb467
#        "gecko-packages/gecko-php-unit": "^2.0 || ^3.0",
39af715
# Bundled
04bb467
#        "php-cs-fixer/diff": "^1.2",
04bb467
#        "symfony/console": "^3.2 || ^4.0",
04bb467
#        "symfony/event-dispatcher": "^3.0 || ^4.0",
04bb467
#        "symfony/filesystem": "^3.0 || ^4.0",
04bb467
#        "symfony/finder": "^3.0 || ^4.0",
04bb467
#        "symfony/options-resolver": "^3.0 || ^4.0",
44f32fb
#        "symfony/polyfill-php70": "^1.0",
16bf60d
#        "symfony/polyfill-php72": "^1.4",
cdb5b88
#        "symfony/polyfill-xml": "^1.3",
04bb467
#        "symfony/process": "^3.0 || ^4.0",
04bb467
#        "symfony/stopwatch": "^3.0 || ^4.0"
de937c2
Requires:       php(language) >= 5.6
8943a5d
Requires:       php-json
68999a6
Requires:       php-tokenizer
7c89fe4
Requires:       php-composer(composer/semver)          <  2
7c89fe4
Requires:       php-composer(composer/semver)          >= 1.4
da4e372
Requires:       php-composer(doctrine/annotations)     <  2
da4e372
Requires:       php-composer(doctrine/annotations)     >= 1.2
b29681e
Requires:       php-composer(gecko-packages/gecko-php-unit) <  %{gecko_max}
b29681e
Requires:       php-composer(gecko-packages/gecko-php-unit) >= %{gecko_min}
da4e372
Requires:       php-composer(sebastian/diff)           <  2
2fc370e
Requires:       php-composer(sebastian/diff)           >= 1.4
b99c6dd
Requires:       php-symfony3-console
b99c6dd
Requires:       php-symfony3-event-dispatcher
b99c6dd
Requires:       php-symfony3-filesystem
b99c6dd
Requires:       php-symfony3-finder
b99c6dd
Requires:       php-symfony3-options-resolver
da4e372
Requires:       php-composer(symfony/polyfill-php70)   <  2
44f32fb
Requires:       php-composer(symfony/polyfill-php70)   >= 1.0
16bf60d
Requires:       php-composer(symfony/polyfill-php72)   <  2
16bf60d
Requires:       php-composer(symfony/polyfill-php72)   >= 1.4
b99c6dd
Requires:       php-symfony3-process
b99c6dd
Requires:       php-symfony3-stopwatch
de937c2
# Missing dependency for Console
b99c6dd
Requires:       php-symfony3-debug
44f32fb
# From composer.json, "suggest": {
da4e372
#        "ext-mbstring": "For handling non-UTF8 characters in cache signature.",
44f32fb
#        "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
44f32fb
Requires:       php-mbstring
16bf60d
# From phpcompatinfo report for version 2.4.0
68999a6
Requires:       php-cli
68999a6
Requires:       php-reflection
68999a6
Requires:       php-dom
68999a6
Requires:       php-pcre
68999a6
Requires:       php-phar
68999a6
Requires:       php-spl
16bf60d
Requires:       php-xml
68999a6
# Autoloader
68999a6
Requires:       php-composer(fedora/autoloader)
68999a6
04bb467
Provides:       bundled(php-cs-fixer/diff) = %{gh_diff_version}
68999a6
Provides:       php-composer(friendsofphp/php-cs-fixer) = %{version}
68999a6
68999a6
68999a6
%description
68999a6
The PHP Coding Standards Fixer tool fixes most issues in your code when you
68999a6
want to follow the PHP coding standards as defined in the PSR-1 and PSR-2
68999a6
documents and many more.
68999a6
68999a6
If you are already using a linter to identify coding standards problems in
68999a6
your code, you know that fixing them by hand is tedious, especially on large
68999a6
projects. This tool does not only detect them, but also fixes them for you.
68999a6
68999a6
68999a6
%prep
39af715
%setup -q -n %{gh_project}-%{gh_commit} -a1
68999a6
%patch0 -p1 -b .rpm
39af715
mv diff-%{gh_diff_commit}/src src/diff
39af715
8943a5d
find src -name \*rpm -delete -print
68999a6
16bf60d
# from composer.json, "autoload" / "classmap"
16bf60d
TESTS="
16bf60d
  tests/Test/Assert/AssertTokensTrait.php
16bf60d
  tests/Test/AbstractFixerTestCase.php
16bf60d
  tests/Test/AbstractIntegrationTestCase.php
16bf60d
  tests/Test/IntegrationCase.php
16bf60d
  tests/Test/IntegrationCaseFactory.php
16bf60d
"
16bf60d
for i in $TESTS; do
16bf60d
  mkdir -p src/$(dirname $i)
16bf60d
  cp -p $i src/$i
16bf60d
done
16bf60d
4830d60
# fix dev-tools path
4830d60
sed -e 's:../../../dev-tools/::' -i src/Console/Command/HelpCommand.php
4830d60
cp -pr dev-tools/ci-integration.sh  src/Console/Command/
16bf60d
39af715
phpab --template fedora --output src/autoload.php src/tests src/diff
16bf60d
16bf60d
cat << 'EOF' | tee -a src/autoload.php
da4e372
da4e372
\Fedora\Autoloader\Autoload::addPsr4('PhpCsFixer\\', __DIR__);
b29681e
if (class_exists('PHPUnit\\Runner\\Version') && version_compare(PHPUnit\Runner\Version::id(), '6', '>')) {
b29681e
    $gecko = [
b29681e
        '%{php_home}/GeckoPackages/PHPUnit3/autoload.php',
b29681e
        '%{php_home}/GeckoPackages/PHPUnit/autoload.php',
b29681e
    ];
b29681e
} else {
b29681e
    $gecko = [
b29681e
        '%{php_home}/GeckoPackages/PHPUnit/autoload.php',
b29681e
        '%{php_home}/GeckoPackages/PHPUnit3/autoload.php',
b29681e
    ];
b29681e
}
da4e372
\Fedora\Autoloader\Dependencies::required([
7c89fe4
    '%{php_home}//Composer/Semver/autoload.php',
b29681e
    $gecko,
da4e372
    '%{php_home}/Doctrine/Common/Annotations/autoload.php',
de937c2
    '%{php_home}/Symfony3/Component/Console/autoload.php',
de937c2
    '%{php_home}/Symfony3/Component/EventDispatcher/autoload.php',
de937c2
    '%{php_home}/Symfony3/Component/Filesystem/autoload.php',
de937c2
    '%{php_home}/Symfony3/Component/Finder/autoload.php',
de937c2
    '%{php_home}/Symfony3/Component/OptionsResolver/autoload.php',
de937c2
    '%{php_home}/Symfony3/Component/Process/autoload.php',
de937c2
    '%{php_home}/Symfony3/Component/Stopwatch//autoload.php',
da4e372
    '%{php_home}/Symfony/Polyfill/autoload.php',
da4e372
]);
da4e372
EOF
68999a6
68999a6
68999a6
%build
68999a6
# Empty build section, most likely nothing required.
68999a6
68999a6
68999a6
%install
68999a6
: Library
cd35d77
mkdir -p   %{buildroot}%{php_home}
cd35d77
cp -pr src %{buildroot}%{php_home}/PhpCsFixer
68999a6
68999a6
: Command
68999a6
install -Dpm755 %{name} %{buildroot}%{_bindir}/%{name}
68999a6
68999a6
68999a6
%check
68999a6
%if %{with_tests}
68999a6
mkdir vendor
cd35d77
cat << 'EOF' | tee vendor/autoload.php
cd35d77
b29681e
// Force version for local, when both versions are available
da4e372
\Fedora\Autoloader\Dependencies::required([
4830d60
    '%{php_home}/Symfony3/Bridge/PhpUnit/autoload.php',
b274c62
    '%{php_home}/org/bovigo/vfs/autoload.php',
da4e372
    '%{php_home}/JsonSchema5/autoload.php',
4830d60
    '%{php_home}/PhpCsFixer/AccessibleObject/autoload.php',
da4e372
    '%{buildroot}%{php_home}/PhpCsFixer/autoload.php',
da4e372
]);
cd35d77
\Fedora\Autoloader\Autoload::addPsr4('PhpCsFixer\\Tests\\', dirname(__DIR__) . '/tests');
cd35d77
EOF
cd35d77
8943a5d
# Fix integration test
8943a5d
sed -e "/README.rst/s:__DIR__.*':'$PWD/README.rst':" \
8943a5d
    -i tests/Console/Command/ReadmeCommandTest.php
4830d60
rm tests/CiIntegrationTest.php
8943a5d
8943a5d
# Disable listener
8943a5d
sed -e 's/listeners/nolistener/' phpunit.xml.dist >phpunit.xml
8943a5d
4830d60
# Redirect to buildroot
4830d60
sed -e 's:%{php_home}:%{buildroot}%{php_home}:' -i %{name}
4830d60
de937c2
ret=0
b29681e
for cmdarg in "php %{phpunit}" "php56 %{_bindir}/phpunit" php70 php71 php72; do
b29681e
  if which $cmdarg; then
b29681e
    set $cmdarg
b29681e
    $1 -d memory_limit=1G ${2:-%{_bindir}/phpunit6} || ret=1
de937c2
  fi
de937c2
done
de937c2
exit $ret
68999a6
%else
68999a6
: Test suite disabled
68999a6
%endif
68999a6
68999a6
68999a6
%files
68999a6
%{!?_licensedir:%global license %%doc}
68999a6
%license LICENSE
68999a6
%doc composer.json
68999a6
%doc *.md *.rst
cd35d77
%{php_home}/PhpCsFixer
68999a6
%{_bindir}/%{name}
68999a6
68999a6
68999a6
%changelog
b274c62
* Thu Dec 28 2017 Remi Collet <remi@remirepo.net> - 2.9.0-2
b274c62
- mikey179/vfsStream only required at builtime
b274c62
7085dbb
* Sat Dec  9 2017 Remi Collet <remi@remirepo.net> - 2.9.0-1
7085dbb
- Update to 2.9.0
7085dbb
7bbbb35
* Mon Nov 27 2017 Remi Collet <remi@remirepo.net> - 2.8.3-1
7bbbb35
- Update to 2.8.3
7bbbb35
- open https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues/3279
7bbbb35
  bad tag for 2.8.3
7bbbb35
b29681e
* Mon Nov 20 2017 Remi Collet <remi@remirepo.net> - 2.8.2-1
b29681e
- Update to 2.8.2
b29681e
b2d3beb
* Fri Nov 10 2017 Remi Collet <remi@remirepo.net> - 2.8.1-1
b2d3beb
- Update to 2.8.1
b2d3beb
b99c6dd
* Tue Nov  7 2017 Remi Collet <remi@remirepo.net> - 2.8.0-2
b99c6dd
- fix FTBFS from Koschei using symfony package names
b99c6dd
04bb467
* Fri Nov  3 2017 Remi Collet <remi@remirepo.net> - 2.8.0-1
04bb467
- Update to 2.8.0
04bb467
7c1ef2e
* Mon Oct  2 2017 Remi Collet <remi@remirepo.net> - 2.7.1-1
7c1ef2e
- Update to 2.7.1
39af715
- drop dependency on sebastian/diff, bundle fork instead
39af715
7c89fe4
* Tue Sep 12 2017 Remi Collet <remi@remirepo.net> - 2.6.0-1
7c89fe4
- Update to 2.6.0
7c89fe4
- add dependency on composer/semver
7c89fe4
4830d60
* Wed Aug 23 2017 Remi Collet <remi@remirepo.net> - 2.5.0-1
4830d60
- Update to 2.5.0
4830d60
- add dependency on php-cs-fixer/accessible-object
4830d60
- raise dependency on symfony 3.2
4830d60
16bf60d
* Thu Aug  3 2017 Remi Collet <remi@remirepo.net> - 2.4.0-1
16bf60d
- Update to 2.4.0
16bf60d
- add dependency on symfony/polyfill-php72
16bf60d
b6597a3
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.2-2
b6597a3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
b6597a3
8943a5d
* Thu May 25 2017 Remi Collet <remi@remirepo.net> - 2.3.2-1
8943a5d
- Update to 2.3.2
8943a5d
- add dependency on gecko-packages/gecko-php-unit
8943a5d
de937c2
* Tue May  9 2017 Remi Collet <remi@remirepo.net> - 2.3.1-1
de937c2
- Update to 2.3.1
de937c2
- raise dependency on PHP 5.6
de937c2
- raise dependency on Symfony 3
de937c2
bac4196
* Wed Apr 26 2017 Remi Collet <remi@remirepo.net> - 2.2.3-1
bac4196
- Update to 2.2.3
bac4196
2fc370e
* Mon Apr 24 2017 Remi Collet <remi@remirepo.net> - 2.2.2-1
2fc370e
- Update to 2.2.2
2fc370e
- raise dependency on sebastian/diff >= 1.4
2fc370e
ef78cfe
* Mon Apr 10 2017 Remi Collet <remi@remirepo.net> - 2.2.1-1
ef78cfe
- Update to 2.2.1
ef78cfe
da4e372
* Sat Apr  1 2017 Remi Collet <remi@remirepo.net> - 2.2.0-1
da4e372
- Update to 2.2.0
da4e372
- add dependency on doctrine/annotations
da4e372
- add dependency on symfony/options-resolver
da4e372
- raise dependency on symfony 2.6
da4e372
- fix autoloader to allow Symfony 3
da4e372
44f32fb
* Fri Mar 31 2017 Remi Collet <remi@remirepo.net> - 2.1.3-1
44f32fb
- Update to 2.1.3
44f32fb
- add dependency on php-mbstring
44f32fb
cdb5b88
* Wed Mar 15 2017 Remi Collet <remi@remirepo.net> - 2.1.2-1
cdb5b88
- Update to 2.1.2
cdb5b88
b522816
* Sat Feb 11 2017 Remi Collet <remi@fedoraproject.org> - 2.1.0-1
b522816
- update to 2.1.0
b522816
- add dependency on symfony/polyfill-php55 (for EPEL-7)
b522816
f54d7fe
* Thu Feb  9 2017 Remi Collet <remi@fedoraproject.org> - 2.0.1-1
f54d7fe
- update to 2.0.1
f54d7fe
cd35d77
* Thu Dec  1 2016 Remi Collet <remi@fedoraproject.org> - 2.0.0-1
cd35d77
- update to 2.0.0
cd35d77
b781e41
* Tue Nov 29 2016 Remi Collet <remi@fedoraproject.org> - 1.13.0-1
b781e41
- update to 1.13.0
b781e41
68999a6
* Tue Nov 15 2016 Remi Collet <remi@fedoraproject.org> - 1.12.4-1
68999a6
- update to 1.12.4
68999a6
68999a6
* Sun Oct 30 2016 Remi Collet <remi@fedoraproject.org> - 1.12.3-1
68999a6
- update to 1.12.3
68999a6
- switch from symfony/class-loader to fedora/autoloader
68999a6
68999a6
* Tue Sep 27 2016 Remi Collet <remi@fedoraproject.org> - 1.12.2-1
68999a6
- update to 1.12.2
68999a6
68999a6
* Fri Sep  9 2016 Remi Collet <remi@fedoraproject.org> - 1.12.1-1
68999a6
- initial package, version 1.12.1
68999a6