diff --git a/.gitignore b/.gitignore index 4321e1bd..4d76a4eb 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ config.ini cache.properties composer.phar phpunit.xml +.php_cs.cache diff --git a/.php_cs b/.php_cs new file mode 100644 index 00000000..6a706e39 --- /dev/null +++ b/.php_cs @@ -0,0 +1,29 @@ +in(__DIR__ . '/src') + ->in(__DIR__ . '/tests'); + +return PhpCsFixer\Config::create() + ->setRules([ + '@Symfony' => true, + 'array_syntax' => ['syntax' => 'short'], + 'blank_line_after_opening_tag' => true, + 'concat_space' => ['spacing' => 'one'], + 'method_argument_space' => ['ensure_fully_multiline' => true], + 'modernize_types_casting' => true, + 'no_multiline_whitespace_before_semicolons' => true, + 'no_useless_else' => true, + 'no_useless_return' => true, + 'ordered_class_elements' => true, + 'ordered_imports' => true, + 'phpdoc_align' => false, + 'phpdoc_order' => true, + 'php_unit_construct' => true, + 'php_unit_dedicate_assert' => true, + 'pre_increment' => false, + 'single_line_comment_style' => true, + ]) + ->setFinder($finder) + ->setUsingCache(true) + ->setRiskyAllowed(true); diff --git a/.travis.yml b/.travis.yml index 111f43d7..13eb98f3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,20 @@ language: php -before_script: - - curl -s http://getcomposer.org/installer | php - - php composer.phar install --dev - php: - - 5.3 - 5.4 + - 7.0 + - 7.1 + +cache: + directories: + - vendor + +install: + - travis_retry composer install --no-interaction --prefer-source + +script: + - vendor/bin/php-cs-fixer fix --dry-run -v + - vendor/bin/phpunit --verbose -script: phpunit +matrix: + fast_finish: true diff --git a/LICENSE.txt b/LICENSE.txt index 492bec55..f8757b3a 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2012-2015, Klaus Silveira and contributors +Copyright (c) 2012, Klaus Silveira and contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 4b8aec76..008515b6 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # GitList: an elegant git repository viewer [![Build Status](https://secure.travis-ci.org/klaussilveira/gitlist.png)](http://travis-ci.org/klaussilveira/gitlist) -GitList is an elegant and modern web interface for interacting with multiple git repositories. It allows you to browse repositories using your favorite browser, viewing files under different revisions, commit history, diffs. It also generates RSS feeds for each repository, allowing you to stay up-to-date with the latest changes anytime, anywhere. GitList was written in PHP, on top of the [Silex](http://silex.sensiolabs.org/) microframework and powered by the Twig template engine. This means that GitList is easy to install and easy to customize. Also, the GitList gorgeous interface was made possible due to [Bootstrap](http://twitter.github.com/bootstrap/). +GitList is an elegant and modern web interface for interacting with multiple git repositories. It allows you to browse repositories using your favorite browser, viewing files under different revisions, commit history, diffs. It also generates RSS feeds for each repository, allowing you to stay up-to-date with the latest changes anytime, anywhere. GitList was written in PHP, on top of the [Silex](http://silex.sensiolabs.org/) microframework and powered by the Twig template engine. This means that GitList is easy to install and easy to customize. Also, the GitList gorgeous interface was made possible due to [Bootstrap](http://twitter.github.com/bootstrap/). ## Features * Multiple repository support @@ -26,10 +26,10 @@ In order to run GitList on your server, you'll need: * git * Apache with mod_rewrite enabled or nginx -* PHP 5.3.3 +* PHP 5.4 ## Installation -* Download GitList from [gitlist.org](http://gitlist.org/) and decompress to your `/var/www/gitlist` folder, or anywhere else you want to place GitList. +* Download GitList from [gitlist.org](http://gitlist.org/) and decompress to your `/var/www/gitlist` folder, or anywhere else you want to place GitList. * Do not download a branch or tag from GitHub, unless you want to use the development version. The version available for download at the website already has all dependencies bundled, so you don't have to use composer or any other tool * Rename the `config.ini-example` file to `config.ini`. * Open up the `config.ini` and configure your installation. You'll have to provide where your repositories are located. diff --git a/build.xml b/build.xml index ed63c460..46f36b22 100644 --- a/build.xml +++ b/build.xml @@ -87,17 +87,16 @@ - - - - - + + + + - + =5.3.0" + "php": ">=5.3.0", + "psr/container": "^1.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.2.x-dev" } }, "autoload": { "psr-0": { - "Pimple": "lib/" + "Pimple": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -92,32 +96,89 @@ "email": "fabien@symfony.com" } ], - "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", + "description": "Pimple, a simple Dependency Injection Container", "homepage": "http://pimple.sensiolabs.org", "keywords": [ "container", "dependency injection" ], - "time": "2013-11-22 08:30:29" + "time": "2017-07-23T07:32:15+00:00" }, { - "name": "psr/log", + "name": "psr/container", "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", "shasum": "" }, + "require": { + "php": ">=5.3.0" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "psr-0": { - "Psr\\Log\\": "" + "psr-4": { + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -131,73 +192,80 @@ } ], "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ "log", "psr", "psr-3" ], - "time": "2012-12-21 11:40:51" + "time": "2016-10-10T12:19:37+00:00" }, { "name": "silex/silex", - "version": "v1.2.0", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/silexphp/Silex.git", - "reference": "aed7cb81eef9ba1082204027a0e3b60440a212e0" + "reference": "ec7d5b5334465414952d4b2e935e73bd085dbbbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex/zipball/aed7cb81eef9ba1082204027a0e3b60440a212e0", - "reference": "aed7cb81eef9ba1082204027a0e3b60440a212e0", + "url": "https://api.github.com/repos/silexphp/Silex/zipball/ec7d5b5334465414952d4b2e935e73bd085dbbbb", + "reference": "ec7d5b5334465414952d4b2e935e73bd085dbbbb", "shasum": "" }, "require": { - "php": ">=5.3.3", - "pimple/pimple": "~1.0", - "symfony/event-dispatcher": ">=2.3,<2.6-dev", - "symfony/http-foundation": ">=2.3,<2.6-dev", - "symfony/http-kernel": ">=2.3,<2.6-dev", - "symfony/routing": ">=2.3,<2.6-dev" + "php": ">=5.5.9", + "pimple/pimple": "~3.0", + "symfony/event-dispatcher": "~2.8|^3.0", + "symfony/http-foundation": "~2.8|^3.0", + "symfony/http-kernel": "~2.8|^3.0", + "symfony/routing": "~2.8|^3.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35 || >= 5.0, <5.4.3" + }, + "replace": { + "silex/api": "self.version", + "silex/providers": "self.version" }, "require-dev": { "doctrine/dbal": "~2.2", - "monolog/monolog": "~1.4,>=1.4.1", - "phpunit/phpunit": "~3.7", - "swiftmailer/swiftmailer": "5.*", - "symfony/browser-kit": ">=2.3,<2.6-dev", - "symfony/config": ">=2.3,<2.6-dev", - "symfony/css-selector": ">=2.3,<2.6-dev", - "symfony/debug": ">=2.3,<2.6-dev", - "symfony/dom-crawler": ">=2.3,<2.6-dev", - "symfony/finder": ">=2.3,<2.6-dev", - "symfony/form": ">=2.3,<2.6-dev", - "symfony/locale": ">=2.3,<2.6-dev", - "symfony/monolog-bridge": ">=2.3,<2.6-dev", - "symfony/options-resolver": ">=2.3,<2.6-dev", - "symfony/process": ">=2.3,<2.6-dev", - "symfony/security": ">=2.3,<2.6-dev", - "symfony/serializer": ">=2.3,<2.6-dev", - "symfony/translation": ">=2.3,<2.6-dev", - "symfony/twig-bridge": ">=2.3,<2.6-dev", - "symfony/validator": ">=2.3,<2.6-dev", - "twig/twig": ">=1.8.0,<2.0-dev" - }, - "suggest": { - "symfony/browser-kit": ">=2.3,<2.6-dev", - "symfony/css-selector": ">=2.3,<2.6-dev", - "symfony/dom-crawler": ">=2.3,<2.6-dev", - "symfony/form": ">=2.3,<2.6-dev" + "monolog/monolog": "^1.4.1", + "swiftmailer/swiftmailer": "~5", + "symfony/asset": "~2.8|^3.0", + "symfony/browser-kit": "~2.8|^3.0", + "symfony/config": "~2.8|^3.0", + "symfony/css-selector": "~2.8|^3.0", + "symfony/debug": "~2.8|^3.0", + "symfony/doctrine-bridge": "~2.8|^3.0", + "symfony/dom-crawler": "~2.8|^3.0", + "symfony/expression-language": "~2.8|^3.0", + "symfony/finder": "~2.8|^3.0", + "symfony/form": "~2.8|^3.0", + "symfony/intl": "~2.8|^3.0", + "symfony/monolog-bridge": "~2.8|^3.0", + "symfony/options-resolver": "~2.8|^3.0", + "symfony/phpunit-bridge": "^3.2", + "symfony/process": "~2.8|^3.0", + "symfony/security": "~2.8|^3.0", + "symfony/serializer": "~2.8|^3.0", + "symfony/translation": "~2.8|^3.0", + "symfony/twig-bridge": "~2.8|^3.0", + "symfony/validator": "~2.8|^3.0", + "symfony/var-dumper": "~2.8|^3.0", + "symfony/web-link": "^3.3", + "twig/twig": "~1.28|~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "2.2.x-dev" } }, "autoload": { - "psr-0": { - "Silex": "src/" + "psr-4": { + "Silex\\": "src/Silex" } }, "notification-url": "https://packagist.org/downloads/", @@ -207,98 +275,102 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Igor Wiedler", - "email": "igor@wiedler.ch", - "homepage": "http://wiedler.ch/igor/" + "email": "igor@wiedler.ch" } ], - "description": "The PHP micro-framework based on the Symfony2 Components", + "description": "The PHP micro-framework based on the Symfony Components", "homepage": "http://silex.sensiolabs.org", "keywords": [ "microframework" ], - "time": "2014-03-29 14:15:59" + "time": "2017-07-23T07:40:14+00:00" }, { "name": "symfony/debug", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Debug", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Debug.git", - "reference": "6a8eb9aba50595014fef52d6b4d99b31dfaa6f02" + "url": "https://github.com/symfony/debug.git", + "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Debug/zipball/6a8eb9aba50595014fef52d6b4d99b31dfaa6f02", - "reference": "6a8eb9aba50595014fef52d6b4d99b31dfaa6f02", + "url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13", + "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9", + "psr/log": "~1.0" }, - "require-dev": { - "symfony/http-foundation": "~2.1", - "symfony/http-kernel": "~2.1" + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, - "suggest": { - "symfony/http-foundation": "", - "symfony/http-kernel": "" + "require-dev": { + "symfony/http-kernel": "~2.8|~3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Debug\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Debug Component", - "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:42" + "homepage": "https://symfony.com", + "time": "2017-07-28T15:27:31+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.4.4", - "target-dir": "Symfony/Component/EventDispatcher", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "e539602e5455aa086c0e81e604745af7789e4d8a" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/e539602e5455aa086c0e81e604745af7789e4d8a", - "reference": "e539602e5455aa086c0e81e604745af7789e4d8a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67535f1e3fd662bdc68d7ba317c93eecd973617e", + "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" + }, + "conflict": { + "symfony/dependency-injection": "<3.3" }, "require-dev": { - "symfony/dependency-injection": "~2.0" + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~3.3", + "symfony/expression-language": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0" }, "suggest": { "symfony/dependency-injection": "", @@ -307,13 +379,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -322,99 +397,99 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony EventDispatcher Component", - "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:31" + "homepage": "https://symfony.com", + "time": "2017-06-09T14:53:08+00:00" }, { "name": "symfony/filesystem", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Filesystem", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Filesystem.git", - "reference": "a3af8294bcce4a7c1b2892363b0c9d8109affad4" + "url": "https://github.com/symfony/filesystem.git", + "reference": "427987eb4eed764c3b6e38d52a0f87989e010676" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a3af8294bcce4a7c1b2892363b0c9d8109affad4", - "reference": "a3af8294bcce4a7c1b2892363b0c9d8109affad4", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/427987eb4eed764c3b6e38d52a0f87989e010676", + "reference": "427987eb4eed764c3b6e38d52a0f87989e010676", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Filesystem\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Filesystem Component", - "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:31" + "homepage": "https://symfony.com", + "time": "2017-07-11T07:17:58+00:00" }, { "name": "symfony/http-foundation", - "version": "v2.4.4", - "target-dir": "Symfony/Component/HttpFoundation", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/HttpFoundation.git", - "reference": "22c4dee84271ad0cd08d19f26d89f2878e11159b" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "49e8cd2d59a7aa9bfab19e46de680c76e500a031" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/22c4dee84271ad0cd08d19f26d89f2878e11159b", - "reference": "22c4dee84271ad0cd08d19f26d89f2878e11159b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49e8cd2d59a7aa9bfab19e46de680c76e500a031", + "reference": "49e8cd2d59a7aa9bfab19e46de680c76e500a031", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "symfony/expression-language": "~2.4" + "symfony/expression-language": "~2.8|~3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" }, - "classmap": [ - "Symfony/Component/HttpFoundation/Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -424,52 +499,61 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony HttpFoundation Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 21:02:05" + "homepage": "https://symfony.com", + "time": "2017-07-21T11:04:46+00:00" }, { "name": "symfony/http-kernel", - "version": "v2.4.4", - "target-dir": "Symfony/Component/HttpKernel", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/HttpKernel.git", - "reference": "0e4410de0f39603d4c44b75fe399470e7de89dc4" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "db10d05f1d95e4168e638db7a81c79616f568ea5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/0e4410de0f39603d4c44b75fe399470e7de89dc4", - "reference": "0e4410de0f39603d4c44b75fe399470e7de89dc4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/db10d05f1d95e4168e638db7a81c79616f568ea5", + "reference": "db10d05f1d95e4168e638db7a81c79616f568ea5", "shasum": "" }, "require": { - "php": ">=5.3.3", + "php": ">=5.5.9", "psr/log": "~1.0", - "symfony/debug": "~2.3", - "symfony/event-dispatcher": "~2.1", - "symfony/http-foundation": "~2.4" + "symfony/debug": "~2.8|~3.0", + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/http-foundation": "~3.3" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.3", + "symfony/var-dumper": "<3.3", + "twig/twig": "<1.34|<2.4,>=2" }, "require-dev": { - "symfony/browser-kit": "~2.2", - "symfony/class-loader": "~2.1", - "symfony/config": "~2.0", - "symfony/console": "~2.2", - "symfony/dependency-injection": "~2.0", - "symfony/finder": "~2.0", - "symfony/process": "~2.0", - "symfony/routing": "~2.2", - "symfony/stopwatch": "~2.2", - "symfony/templating": "~2.2" + "psr/cache": "~1.0", + "symfony/browser-kit": "~2.8|~3.0", + "symfony/class-loader": "~2.8|~3.0", + "symfony/config": "~2.8|~3.0", + "symfony/console": "~2.8|~3.0", + "symfony/css-selector": "~2.8|~3.0", + "symfony/dependency-injection": "~3.3", + "symfony/dom-crawler": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/finder": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0", + "symfony/routing": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0", + "symfony/templating": "~2.8|~3.0", + "symfony/translation": "~2.8|~3.0", + "symfony/var-dumper": "~3.3" }, "suggest": { "symfony/browser-kit": "", @@ -477,67 +561,22 @@ "symfony/config": "", "symfony/console": "", "symfony/dependency-injection": "", - "symfony/finder": "" + "symfony/finder": "", + "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\HttpKernel\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "http://symfony.com", - "time": "2014-04-27 13:39:18" - }, - { - "name": "symfony/process", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Process", - "source": { - "type": "git", - "url": "https://github.com/symfony/Process.git", - "reference": "8721f1476d5d38a43c7d6ccb6435b351cf8f3bb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/8721f1476d5d38a43c7d6ccb6435b351cf8f3bb7", - "reference": "8721f1476d5d38a43c7d6ccb6435b351cf8f3bb7", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Process\\": "" - } + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -546,60 +585,50 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", - "homepage": "http://symfony.com", - "time": "2014-04-27 13:34:57" + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2017-08-01T10:25:59+00:00" }, { - "name": "symfony/routing", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Routing", + "name": "symfony/polyfill-mbstring", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/Routing.git", - "reference": "74229f66e16bce6d2415ca44d4756f8e7ea880f8" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Routing/zipball/74229f66e16bce6d2415ca44d4756f8e7ea880f8", - "reference": "74229f66e16bce6d2415ca44d4756f8e7ea880f8", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803", + "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "doctrine/annotations": "~1.0", - "psr/log": "~1.0", - "symfony/config": "~2.2", - "symfony/expression-language": "~2.4", - "symfony/yaml": "~2.0" - }, "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/yaml": "For using the YAML loader" + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Routing\\": "" - } + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -607,69 +636,55 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Routing Component", - "homepage": "http://symfony.com", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "router", - "routing", - "uri", - "url" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], - "time": "2014-04-23 14:04:21" + "time": "2017-06-14T15:44:48+00:00" }, { - "name": "symfony/security-core", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Security/Core", + "name": "symfony/process", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/security-core.git", - "reference": "1fbe80d10b7a5bcb619abe3e4cfede795d9958dc" + "url": "https://github.com/symfony/process.git", + "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/1fbe80d10b7a5bcb619abe3e4cfede795d9958dc", - "reference": "1fbe80d10b7a5bcb619abe3e4cfede795d9958dc", + "url": "https://api.github.com/repos/symfony/process/zipball/07432804942b9f6dd7b7377faf9920af5f95d70a", + "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "ircmaxell/password-compat": "1.0.*", - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1", - "symfony/expression-language": "~2.4", - "symfony/http-foundation": "~2.4", - "symfony/validator": "~2.2" - }, - "suggest": { - "ircmaxell/password-compat": "For using the BCrypt password encoder in PHP <5.5", - "symfony/event-dispatcher": "", - "symfony/expression-language": "For using the expression voter", - "symfony/http-foundation": "", - "symfony/validator": "For using the user password constraint" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Security\\Core\\": "" - } + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -678,54 +693,70 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - Core Library", - "homepage": "http://symfony.com", - "time": "2014-04-23 14:04:21" + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2017-07-13T13:05:09+00:00" }, { - "name": "symfony/security-csrf", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Security/Csrf", + "name": "symfony/routing", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/security-csrf.git", - "reference": "920c60129db785b4454d254b638f332dc290c7cb" + "url": "https://github.com/symfony/routing.git", + "reference": "4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/920c60129db785b4454d254b638f332dc290c7cb", - "reference": "920c60129db785b4454d254b638f332dc290c7cb", + "url": "https://api.github.com/repos/symfony/routing/zipball/4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26", + "reference": "4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/security-core": "~2.4" + "php": ">=5.5.9" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.3", + "symfony/yaml": "<3.3" }, "require-dev": { - "symfony/http-foundation": "~2.1" + "doctrine/annotations": "~1.0", + "doctrine/common": "~2.2", + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~3.3", + "symfony/expression-language": "~2.8|~3.0", + "symfony/http-foundation": "~2.8|~3.0", + "symfony/yaml": "~3.3" }, "suggest": { - "symfony/http-foundation": "For using the class SessionTokenStorage." + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/dependency-injection": "For loading routes from a service", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Security\\Csrf\\": "" - } + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -734,52 +765,67 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - CSRF Library", - "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:42" + "description": "Symfony Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "time": "2017-07-21T17:43:13+00:00" }, { "name": "symfony/twig-bridge", - "version": "v2.4.4", - "target-dir": "Symfony/Bridge/Twig", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/TwigBridge.git", - "reference": "c34d6f5a808c55139dcf403ab8977e2e1cfbbf32" + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "eaa997f4e45a3c38323b76ff0a57f9f35ae89e5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/TwigBridge/zipball/c34d6f5a808c55139dcf403ab8977e2e1cfbbf32", - "reference": "c34d6f5a808c55139dcf403ab8977e2e1cfbbf32", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/eaa997f4e45a3c38323b76ff0a57f9f35ae89e5c", + "reference": "eaa997f4e45a3c38323b76ff0a57f9f35ae89e5c", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/security-csrf": "~2.4", - "twig/twig": "~1.12" + "php": ">=5.5.9", + "twig/twig": "~1.34|~2.4" + }, + "conflict": { + "symfony/form": "<3.2.10|~3.3,<3.3.3" }, "require-dev": { - "symfony/expression-language": "~2.4", - "symfony/form": "~2.2", - "symfony/http-kernel": "~2.2", - "symfony/routing": "~2.2", - "symfony/security": "~2.4", - "symfony/stopwatch": "~2.2", - "symfony/templating": "~2.1", - "symfony/translation": "~2.2", - "symfony/yaml": "~2.0" + "fig/link-util": "^1.0", + "symfony/asset": "~2.8|~3.0", + "symfony/console": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/finder": "~2.8|~3.0", + "symfony/form": "^3.2.10|^3.3.3", + "symfony/http-kernel": "~3.2", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/routing": "~2.8|~3.0", + "symfony/security": "~2.8|~3.0", + "symfony/security-acl": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0", + "symfony/templating": "~2.8|~3.0", + "symfony/translation": "~2.8|~3.0", + "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2", + "symfony/web-link": "~3.3", + "symfony/yaml": "~2.8|~3.0" }, "suggest": { + "symfony/asset": "For using the AssetExtension", "symfony/expression-language": "For using the ExpressionExtension", + "symfony/finder": "", "symfony/form": "For using the FormExtension", "symfony/http-kernel": "For using the HttpKernelExtension", "symfony/routing": "For using the RoutingExtension", @@ -787,18 +833,23 @@ "symfony/stopwatch": "For using the StopwatchExtension", "symfony/templating": "For using the TwigEngine", "symfony/translation": "For using the TranslationExtension", + "symfony/var-dumper": "For using the DumpExtension", + "symfony/web-link": "For using the WebLinkExtension", "symfony/yaml": "For using the YamlExtension" }, "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Bridge\\Twig\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -807,45 +858,52 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Twig Bridge", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:37:09" + "homepage": "https://symfony.com", + "time": "2017-07-26T06:42:48+00:00" }, { "name": "twig/twig", - "version": "v1.15.1", + "version": "v2.4.3", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed" + "reference": "eab7c3288ae6603d7d6f92b531626af2b162d1f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/1fb5784662f438d7d96a541e305e28b812e2eeed", - "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/eab7c3288ae6603d7d6f92b531626af2b162d1f2", + "reference": "eab7c3288ae6603d7d6f92b531626af2b162d1f2", "shasum": "" }, "require": { - "php": ">=5.2.4" + "php": "^7.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~3.3@dev" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "2.4-dev" } }, "autoload": { "psr-0": { "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -866,7 +924,7 @@ }, { "name": "Twig Team", - "homepage": "https://github.com/fabpot/Twig/graphs/contributors", + "homepage": "http://twig.sensiolabs.org/contributors", "role": "Contributors" } ], @@ -875,32 +933,416 @@ "keywords": [ "templating" ], - "time": "2014-02-13 10:19:29" + "time": "2017-06-07T18:47:58+00:00" } ], "packages-dev": [ { - "name": "pdepend/pdepend", - "version": "1.1.3", + "name": "doctrine/annotations", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/pdepend/pdepend.git", - "reference": "1537f19d62d7b30c13ac173270106df7c6b9c459" + "url": "https://github.com/doctrine/annotations.git", + "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/1537f19d62d7b30c13ac173270106df7c6b9c459", - "reference": "1537f19d62d7b30c13ac173270106df7c6b9c459", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/5beebb01b025c94e93686b7a0ed3edae81fe3e7f", + "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f", "shasum": "" }, "require": { - "php": ">=5.2.3" + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^5.7" }, - "bin": [ - "src/bin/pdepend" - ], "type": "library", - "autoload": { + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-07-22T10:58:02+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "63aad575ec2a29d50eb6c3b5cbc17430b28895b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/63aad575ec2a29d50eb6c3b5cbc17430b28895b2", + "reference": "63aad575ec2a29d50eb6c3b5cbc17430b28895b2", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.2", + "ext-json": "*", + "ext-tokenizer": "*", + "gecko-packages/gecko-php-unit": "^2.0", + "php": "^5.6 || >=7.0 <7.2", + "sebastian/diff": "^1.4", + "symfony/console": "^3.2", + "symfony/event-dispatcher": "^3.0", + "symfony/filesystem": "^3.0", + "symfony/finder": "^3.0", + "symfony/options-resolver": "^3.0", + "symfony/polyfill-php70": "^1.0", + "symfony/polyfill-php72": "^1.4", + "symfony/process": "^3.0", + "symfony/stopwatch": "^3.0" + }, + "conflict": { + "hhvm": "*" + }, + "require-dev": { + "johnkary/phpunit-speedtrap": "^1.1", + "justinrainbow/json-schema": "^5.0", + "php-cs-fixer/accessible-object": "^1.0", + "phpunit/phpunit": "^4.8.35 || ^5.4.3", + "satooshi/php-coveralls": "^1.0", + "symfony/phpunit-bridge": "^3.2.2" + }, + "suggest": { + "ext-mbstring": "For handling non-UTF8 characters in cache signature.", + "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "classmap": [ + "tests/Test/Assert/AssertTokensTrait.php", + "tests/Test/AbstractFixerTestCase.php", + "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/IntegrationCase.php", + "tests/Test/IntegrationCaseFactory.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "time": "2017-08-22T14:15:09+00:00" + }, + { + "name": "gecko-packages/gecko-php-unit", + "version": "v2.1", + "source": { + "type": "git", + "url": "https://github.com/GeckoPackages/GeckoPHPUnit.git", + "reference": "5b9e9622c7efd3b22655270b80c03f9e52878a6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeckoPackages/GeckoPHPUnit/zipball/5b9e9622c7efd3b22655270b80c03f9e52878a6e", + "reference": "5b9e9622c7efd3b22655270b80c03f9e52878a6e", + "shasum": "" + }, + "require": { + "php": "^5.3.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.4.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "GeckoPackages\\PHPUnit\\": "src\\PHPUnit" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Additional PHPUnit tests.", + "homepage": "https://github.com/GeckoPackages", + "keywords": [ + "extension", + "filesystem", + "phpunit" + ], + "time": "2017-06-20T11:22:48+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-04-12T18:52:22+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.10", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d", + "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2017-03-13T16:27:32+00:00" + }, + { + "name": "pdepend/pdepend", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/pdepend/pdepend.git", + "reference": "1537f19d62d7b30c13ac173270106df7c6b9c459" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/1537f19d62d7b30c13ac173270106df7c6b9c459", + "reference": "1537f19d62d7b30c13ac173270106df7c6b9c459", + "shasum": "" + }, + "require": { + "php": ">=5.2.3" + }, + "bin": [ + "src/bin/pdepend" + ], + "type": "library", + "autoload": { "psr-0": { "PHP_": "src/main/php/" } @@ -909,33 +1351,526 @@ "license": [ "BSD-3-Clause" ], - "description": "Official version of pdepend to be handled with Composer", - "time": "2013-12-04 17:46:00" + "description": "Official version of pdepend to be handled with Composer", + "time": "2013-12-04T17:46:00+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27T11:43:31+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157", + "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.3.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-08-08T06:39:58+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773", + "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-06-03T08:32:36+00:00" + }, + { + "name": "phploc/phploc", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phploc.git", + "reference": "d177c22e2a08e448f7bdfa762045f7bd086834d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phploc/zipball/d177c22e2a08e448f7bdfa762045f7bd086834d7", + "reference": "d177c22e2a08e448f7bdfa762045f7bd086834d7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/finder-facade": ">=1.1.0", + "sebastian/git": ">=1.0.0", + "sebastian/version": ">=1.0.3", + "symfony/console": ">=2.2.0" + }, + "bin": [ + "phploc" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "A tool for quickly measuring the size of a PHP project.", + "homepage": "https://github.com/sebastianbergmann/phploc", + "time": "2014-04-27T06:47:27+00:00" + }, + { + "name": "phpmd/phpmd", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/phpmd/phpmd.git", + "reference": "f2d47500f4c5f80ee442d95829c62c2ece2bbeb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/f2d47500f4c5f80ee442d95829c62c2ece2bbeb6", + "reference": "f2d47500f4c5f80ee442d95829c62c2ece2bbeb6", + "shasum": "" + }, + "require": { + "pdepend/pdepend": "1.1.*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "3.*@stable", + "squizlabs/php_codesniffer": "@stable" + }, + "bin": [ + "src/bin/phpmd" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "../../pdepend/pdepend/src/main/php", + "src/main/php" + ], + "license": [ + "BSD-3-Clause" + ], + "description": "Official version of PHPMD handled with Composer.", + "time": "2014-09-16T14:26:49+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2017-03-02T20:05:34+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-04-02T07:44:40+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2016-10-03T07:40:28+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" }, { - "name": "phploc/phploc", - "version": "2.0.5", + "name": "phpunit/php-timer", + "version": "1.0.9", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phploc.git", - "reference": "d177c22e2a08e448f7bdfa762045f7bd086834d7" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phploc/zipball/d177c22e2a08e448f7bdfa762045f7bd086834d7", - "reference": "d177c22e2a08e448f7bdfa762045f7bd086834d7", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/finder-facade": ">=1.1.0", - "sebastian/git": ">=1.0.0", - "sebastian/version": ">=1.0.3", - "symfony/console": ">=2.2.0" + "php": "^5.3.3 || ^7.0" }, - "bin": [ - "phploc" + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0", + "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.4" + }, "type": "library", "extra": { "branch-alias": { @@ -954,79 +1889,131 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "A tool for quickly measuring the size of a PHP project.", - "homepage": "https://github.com/sebastianbergmann/phploc", - "time": "2014-04-27 06:47:27" + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-08-20T05:47:52+00:00" }, { - "name": "phpmd/phpmd", - "version": "1.5.0", + "name": "phpunit/phpunit", + "version": "5.7.21", "source": { "type": "git", - "url": "https://github.com/phpmd/phpmd.git", - "reference": "692b7b1b64518091b2b1bea91b489dbb13598c07" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "3b91adfb64264ddec5a2dee9851f354aa66327db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/692b7b1b64518091b2b1bea91b489dbb13598c07", - "reference": "692b7b1b64518091b2b1bea91b489dbb13598c07", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3b91adfb64264ddec5a2dee9851f354aa66327db", + "reference": "3b91adfb64264ddec5a2dee9851f354aa66327db", "shasum": "" }, "require": { - "pdepend/pdepend": ">=1.1.1", - "php": ">=5.3.0" + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "^1.4.3", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "~1.0.3|~2.0", + "symfony/yaml": "~2.1|~3.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" }, "bin": [ - "src/bin/phpmd" + "phpunit" ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "../../pdepend/pdepend/src/main/php", - "src/main/php" + "license": [ + "BSD-3-Clause" ], - "description": "Official version of PHPMD handled with Composer.", - "time": "2013-07-26 14:47:02" + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-06-21T08:11:54+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "2.0.6", + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "bccecf50645068b44f49a84009e2a0499a500b99" + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bccecf50645068b44f49a84009e2a0499a500b99", - "reference": "bccecf50645068b44f49a84009e2a0499a500b99", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3.1", - "phpunit/php-text-template": "~1.2.0", - "phpunit/php-token-stream": "~1.2.2", - "sebastian/environment": "~1.0.0", - "sebastian/version": "~1.0.3" + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4.0.14" + "phpunit/phpunit": "^5.4" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "ext-soap": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.2.x-dev" } }, "autoload": { @@ -1035,9 +2022,6 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -1048,241 +2032,352 @@ "role": "lead" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", "keywords": [ - "coverage", - "testing", + "mock", "xunit" ], - "time": "2014-04-30 09:01:21" + "time": "2017-06-30T09:13:00+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "1.3.4", + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "classmap": [ - "File/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "filesystem", - "iterator" + "diff" ], - "time": "2013-10-10 15:34:57" + "time": "2017-05-22T07:24:03+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.0", + "name": "sebastian/environment", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "classmap": [ - "Text/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "template" + "Xdebug", + "environment", + "hhvm" ], - "time": "2014-01-30 17:20:04" + "time": "2016-11-26T07:53:53+00:00" }, { - "name": "phpunit/php-timer", - "version": "1.0.5", + "name": "sebastian/exporter", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "classmap": [ - "PHP/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ - "timer" + "export", + "exporter" ], - "time": "2013-08-02 07:42:54" + "time": "2016-11-19T08:54:04+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "1.2.2", + "name": "sebastian/finder-facade", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" + "url": "https://github.com/sebastianbergmann/finder-facade.git", + "reference": "2a6f7f57efc0aa2d23297d9fd9e2a03111a8c0b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", + "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/2a6f7f57efc0aa2d23297d9fd9e2a03111a8c0b9", + "reference": "2a6f7f57efc0aa2d23297d9fd9e2a03111a8c0b9", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" + "symfony/finder": "~2.3|~3.0", + "theseer/fdomdocument": "~1.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, "autoload": { "classmap": [ - "PHP/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2014-03-03 05:10:30" + "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", + "homepage": "https://github.com/sebastianbergmann/finder-facade", + "time": "2016-02-17T07:02:23+00:00" }, { - "name": "phpunit/phpunit", - "version": "4.1.0", + "name": "sebastian/git", + "version": "2.1.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "efb1b1334605594417a3bd466477772d06d460a8" + "url": "https://github.com/sebastianbergmann/git.git", + "reference": "815bbbc963cf35e5413df195aa29df58243ecd24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/efb1b1334605594417a3bd466477772d06d460a8", - "reference": "efb1b1334605594417a3bd466477772d06d460a8", + "url": "https://api.github.com/repos/sebastianbergmann/git/zipball/815bbbc963cf35e5413df195aa29df58243ecd24", + "reference": "815bbbc963cf35e5413df195aa29df58243ecd24", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpunit/php-code-coverage": "~2.0", - "phpunit/php-file-iterator": "~1.3.1", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "~1.0.2", - "phpunit/phpunit-mock-objects": "~2.1", - "sebastian/comparator": "~1.0", - "sebastian/diff": "~1.1", - "sebastian/environment": "~1.0", - "sebastian/exporter": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.0" - }, - "suggest": { - "phpunit/php-invoker": "~1.1" + "php": ">=5.3.3" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1.x-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -1291,57 +2386,50 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "http://www.phpunit.de/", + "description": "Simple wrapper for Git", + "homepage": "http://www.github.com/sebastianbergmann/git", "keywords": [ - "phpunit", - "testing", - "xunit" + "git" ], - "time": "2014-05-02 07:13:40" + "abandoned": true, + "time": "2017-01-23T20:57:12+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "2.1.0", + "name": "sebastian/global-state", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "da0eb04d8ee95ec2898187e407e519c118d3d27c" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/da0eb04d8ee95ec2898187e407e519c118d3d27c", - "reference": "da0eb04d8ee95ec2898187e407e519c118d3d27c", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "~4.1" + "phpunit/phpunit": "~4.2" }, "suggest": { - "ext-soap": "*" + "ext-uopz": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -1350,53 +2438,47 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "mock", - "xunit" + "global state" ], - "time": "2014-05-02 07:04:11" + "time": "2015-10-12T03:26:01+00:00" }, { - "name": "sebastian/comparator", - "version": "1.0.0", + "name": "sebastian/object-enumerator", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.1", - "sebastian/exporter": "~1.0" + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" }, "require-dev": { - "phpunit/phpunit": "~4.1" + "phpunit/phpunit": "~5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1411,52 +2493,42 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "email": "sebastian@phpunit.de" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2014-05-02 07:05:58" + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-02-18T15:18:39+00:00" }, { - "name": "sebastian/diff", - "version": "1.1.0", + "name": "sebastian/phpcpd", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d" + "url": "https://github.com/sebastianbergmann/phpcpd.git", + "reference": "24d9a880deadb0b8c9680e9cfe78e30b704225db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", + "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/24d9a880deadb0b8c9680e9cfe78e30b704225db", + "reference": "24d9a880deadb0b8c9680e9cfe78e30b704225db", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.3", + "phpunit/php-timer": ">=1.0.6", + "sebastian/finder-facade": "~1.1", + "sebastian/version": "~1.0|~2.0", + "symfony/console": "~2.7|^3.0", + "theseer/fdomdocument": "~1.4" }, + "bin": [ + "phpcpd" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1473,43 +2545,36 @@ "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" } ], - "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2013-08-03 16:46:33" + "description": "Copy/Paste Detector (CPD) for PHP code.", + "homepage": "https://github.com/sebastianbergmann/phpcpd", + "time": "2016-04-17T19:32:49+00:00" }, { - "name": "sebastian/environment", - "version": "1.0.0", + "name": "sebastian/recursion-context", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "4.0.*@dev" + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1522,40 +2587,39 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2014-02-18 16:17:19" + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19T07:33:16+00:00" }, { - "name": "sebastian/exporter", - "version": "1.0.1", + "name": "sebastian/resource-operations", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "4.0.*@dev" + "php": ">=5.6.0" }, "type": "library", "extra": { @@ -1575,54 +2639,36 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net", - "role": "Lead" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "email": "sebastian@phpunit.de" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2014-02-16 08:26:31" + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" }, { - "name": "sebastian/finder-facade", - "version": "1.1.0", + "name": "sebastian/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/finder-facade.git", - "reference": "1e396fda3449fce9df032749fa4fa2619e0347e0" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/1e396fda3449fce9df032749fa4fa2619e0347e0", - "reference": "1e396fda3449fce9df032749fa4fa2619e0347e0", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { - "symfony/finder": ">=2.2.0", - "theseer/fdomdocument": ">=1.3.1" + "php": ">=5.6" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1639,251 +2685,275 @@ "role": "lead" } ], - "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", - "homepage": "https://github.com/sebastianbergmann/finder-facade", - "time": "2013-05-28 06:10:03" + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" }, { - "name": "sebastian/git", - "version": "1.2.0", + "name": "symfony/browser-kit", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/git.git", - "reference": "a99fbc102e982c1404041ef3e4d431562b29bcba" + "url": "https://github.com/symfony/browser-kit.git", + "reference": "8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/git/zipball/a99fbc102e982c1404041ef3e4d431562b29bcba", - "reference": "a99fbc102e982c1404041ef3e4d431562b29bcba", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0", + "reference": "8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9", + "symfony/dom-crawler": "~2.8|~3.0" + }, + "require-dev": { + "symfony/css-selector": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" + }, + "suggest": { + "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Simple wrapper for Git", - "homepage": "http://www.github.com/sebastianbergmann/git", - "keywords": [ - "git" - ], - "time": "2013-08-04 09:35:29" + "description": "Symfony BrowserKit Component", + "homepage": "https://symfony.com", + "time": "2017-07-12T13:03:20+00:00" }, { - "name": "sebastian/phpcpd", - "version": "2.0.1", + "name": "symfony/console", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpcpd.git", - "reference": "a9462153f2dd90466a010179901d31fbff598365" + "url": "https://github.com/symfony/console.git", + "reference": "b0878233cb5c4391347e5495089c7af11b8e6201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/a9462153f2dd90466a010179901d31fbff598365", - "reference": "a9462153f2dd90466a010179901d31fbff598365", + "url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201", + "reference": "b0878233cb5c4391347e5495089c7af11b8e6201", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-timer": ">=1.0.4", - "sebastian/finder-facade": ">=1.1.0", - "sebastian/version": ">=1.0.3", - "symfony/console": ">=2.2.0", - "theseer/fdomdocument": "~1.4" + "php": ">=5.5.9", + "symfony/debug": "~2.8|~3.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.3", + "symfony/dependency-injection": "~3.3", + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/filesystem": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/filesystem": "", + "symfony/process": "" }, - "bin": [ - "phpcpd" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Copy/Paste Detector (CPD) for PHP code.", - "homepage": "https://github.com/sebastianbergmann/phpcpd", - "time": "2014-03-31 09:25:30" + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2017-07-29T21:27:59+00:00" }, { - "name": "sebastian/version", - "version": "1.0.3", + "name": "symfony/css-selector", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43" + "url": "https://github.com/symfony/css-selector.git", + "reference": "4d882dced7b995d5274293039370148e291808f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", - "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/4d882dced7b995d5274293039370148e291808f2", + "reference": "4d882dced7b995d5274293039370148e291808f2", "shasum": "" }, + "require": { + "php": ">=5.5.9" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2014-03-07 15:35:33" + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2017-05-01T15:01:29+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "dev-phpcs-fixer", + "name": "symfony/dom-crawler", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "01f86d7cadfd8f5b1c07c04af88a16df6e51acd9" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/01f86d7cadfd8f5b1c07c04af88a16df6e51acd9", - "reference": "01f86d7cadfd8f5b1c07c04af88a16df6e51acd9", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1", + "reference": "fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.1.2" + "php": ">=5.5.9", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "symfony/css-selector": "~2.8|~3.0" + }, + "suggest": { + "symfony/css-selector": "" }, - "bin": [ - "scripts/phpcs", - "scripts/phpcbf" - ], "type": "library", "extra": { "branch-alias": { - "dev-phpcs-fixer": "2.0.x-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "classmap": [ - "CodeSniffer.php", - "CodeSniffer/CLI.php", - "CodeSniffer/Exception.php", - "CodeSniffer/File.php", - "CodeSniffer/Fixer.php", - "CodeSniffer/Report.php", - "CodeSniffer/Reporting.php", - "CodeSniffer/Sniff.php", - "CodeSniffer/Tokens.php", - "CodeSniffer/Reports/", - "CodeSniffer/Tokenizers/", - "CodeSniffer/DocGenerators/", - "CodeSniffer/Standards/AbstractPatternSniff.php", - "CodeSniffer/Standards/AbstractScopeSniff.php", - "CodeSniffer/Standards/AbstractVariableSniff.php", - "CodeSniffer/Standards/IncorrectPatternException.php", - "CodeSniffer/Standards/Generic/Sniffs/", - "CodeSniffer/Standards/MySource/Sniffs/", - "CodeSniffer/Standards/PEAR/Sniffs/", - "CodeSniffer/Standards/PSR1/Sniffs/", - "CodeSniffer/Standards/PSR2/Sniffs/", - "CodeSniffer/Standards/Squiz/Sniffs/", - "CodeSniffer/Standards/Zend/Sniffs/" + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Greg Sherwood", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", - "keywords": [ - "phpcs", - "standards" - ], - "time": "2014-05-12 23:03:00" + "description": "Symfony DomCrawler Component", + "homepage": "https://symfony.com", + "time": "2017-05-25T23:10:31+00:00" }, { - "name": "symfony/browser-kit", - "version": "v2.3.13", - "target-dir": "Symfony/Component/BrowserKit", + "name": "symfony/finder", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/BrowserKit.git", - "reference": "97563874c24b65ea8d31b82fe051a161caf83e10" + "url": "https://github.com/symfony/finder.git", + "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/BrowserKit/zipball/97563874c24b65ea8d31b82fe051a161caf83e10", - "reference": "97563874c24b65ea8d31b82fe051a161caf83e10", + "url": "https://api.github.com/repos/symfony/finder/zipball/baea7f66d30854ad32988c11a09d7ffd485810c4", + "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/dom-crawler": "~2.0" - }, - "require-dev": { - "symfony/css-selector": "~2.0", - "symfony/process": "~2.0" - }, - "suggest": { - "symfony/process": "" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\BrowserKit\\": "" - } + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1892,53 +2962,47 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony BrowserKit Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:35:25" + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2017-06-01T21:01:25+00:00" }, { - "name": "symfony/console", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Console", + "name": "symfony/options-resolver", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Console.git", - "reference": "2e452005b1e1d003d23702d227e23614679eb5ca" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "ff48982d295bcac1fd861f934f041ebc73ae40f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/2e452005b1e1d003d23702d227e23614679eb5ca", - "reference": "2e452005b1e1d003d23702d227e23614679eb5ca", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ff48982d295bcac1fd861f934f041ebc73ae40f0", + "reference": "ff48982d295bcac1fd861f934f041ebc73ae40f0", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/event-dispatcher": "~2.1" - }, - "suggest": { - "symfony/event-dispatcher": "" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Console\\": "" - } + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1947,47 +3011,56 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", - "homepage": "http://symfony.com", - "time": "2014-04-27 13:34:57" + "description": "Symfony OptionsResolver Component", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "time": "2017-04-12T14:14:56+00:00" }, { - "name": "symfony/css-selector", - "version": "v2.3.13", - "target-dir": "Symfony/Component/CssSelector", + "name": "symfony/polyfill-php70", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/CssSelector.git", - "reference": "0d2ab42d49536760f045069415832c9c604c8cc7" + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "b6482e68974486984f59449ecea1fbbb22ff840f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/CssSelector/zipball/0d2ab42d49536760f045069415832c9c604c8cc7", - "reference": "0d2ab42d49536760f045069415832c9c604c8cc7", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/b6482e68974486984f59449ecea1fbbb22ff840f", + "reference": "b6482e68974486984f59449ecea1fbbb22ff840f", "shasum": "" }, "require": { + "paragonie/random_compat": "~1.0|~2.0", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\CssSelector\\": "" - } + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1995,58 +3068,54 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:35:25" + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2017-06-14T15:44:48+00:00" }, { - "name": "symfony/dom-crawler", - "version": "v2.4.4", - "target-dir": "Symfony/Component/DomCrawler", + "name": "symfony/polyfill-php72", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/DomCrawler.git", - "reference": "e94b29c7cac964e58c406408d238ceeaa3604e78" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "8abc9097f5001d310f0edba727469c988acc6ea7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/e94b29c7cac964e58c406408d238ceeaa3604e78", - "reference": "e94b29c7cac964e58c406408d238ceeaa3604e78", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8abc9097f5001d310f0edba727469c988acc6ea7", + "reference": "8abc9097f5001d310f0edba727469c988acc6ea7", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "symfony/css-selector": "~2.0" - }, - "suggest": { - "symfony/css-selector": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\DomCrawler\\": "" - } + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2054,48 +3123,54 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DomCrawler Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:37:09" + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2017-07-11T13:25:55+00:00" }, { - "name": "symfony/finder", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Finder", + "name": "symfony/stopwatch", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Finder.git", - "reference": "25e1e7d5e7376f8a92ae3b1d714d956edf33a730" + "url": "https://github.com/symfony/stopwatch.git", + "reference": "602a15299dc01556013b07167d4f5d3a60e90d15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Finder/zipball/25e1e7d5e7376f8a92ae3b1d714d956edf33a730", - "reference": "25e1e7d5e7376f8a92ae3b1d714d956edf33a730", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/602a15299dc01556013b07167d4f5d3a60e90d15", + "reference": "602a15299dc01556013b07167d4f5d3a60e90d15", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Finder\\": "" - } + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2104,47 +3179,53 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", - "homepage": "http://symfony.com", - "time": "2014-04-27 13:34:57" + "description": "Symfony Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2017-04-12T14:14:56+00:00" }, { "name": "symfony/yaml", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Yaml", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "65539ecde838f9c0d18b006b2101e3deb4b5c9ff" + "url": "https://github.com/symfony/yaml.git", + "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/65539ecde838f9c0d18b006b2101e3deb4b5c9ff", - "reference": "65539ecde838f9c0d18b006b2101e3deb4b5c9ff", + "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed", + "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" + }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Yaml\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2153,31 +3234,29 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:37:09" + "homepage": "https://symfony.com", + "time": "2017-07-23T12:43:26+00:00" }, { "name": "theseer/fdomdocument", - "version": "1.5.0", + "version": "1.6.6", "source": { "type": "git", "url": "https://github.com/theseer/fDOMDocument.git", - "reference": "137aa3b13bef05b4e301899cbabdaf7d501847d2" + "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/137aa3b13bef05b4e301899cbabdaf7d501847d2", - "reference": "137aa3b13bef05b4e301899cbabdaf7d501847d2", + "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/6e8203e40a32a9c770bcb62fe37e68b948da6dca", + "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca", "shasum": "" }, "require": { @@ -2204,14 +3283,62 @@ ], "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.", "homepage": "https://github.com/theseer/fDOMDocument", - "time": "2014-02-19 00:20:43" + "time": "2017-06-30T11:53:12+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23T20:04:58+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "squizlabs/php_codesniffer": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": [], diff --git a/src/Application.php b/src/Application.php index 664c01c3..094b5200 100644 --- a/src/Application.php +++ b/src/Application.php @@ -2,13 +2,13 @@ namespace GitList; -use Silex\Application as SilexApplication; -use Silex\Provider\TwigServiceProvider; -use Silex\Provider\UrlGeneratorServiceProvider; use GitList\Provider\GitServiceProvider; use GitList\Provider\RepositoryUtilServiceProvider; -use GitList\Provider\ViewUtilServiceProvider; use GitList\Provider\RoutingUtilServiceProvider; +use GitList\Provider\ViewUtilServiceProvider; +use Silex\Application as SilexApplication; +use Silex\Provider\RoutingServiceProvider; +use Silex\Provider\TwigServiceProvider; use Symfony\Component\Filesystem\Filesystem; /** @@ -31,64 +31,65 @@ public function __construct(Config $config, $root = null) $this->path = realpath($root); $this['debug'] = $config->get('app', 'debug'); - $this['date.format'] = $config->get('date', 'format') ? $config->get('date', 'format') : 'd/m/Y H:i:s'; $this['theme'] = $config->get('app', 'theme') ? $config->get('app', 'theme') : 'default'; - $this['title'] = $config->get('app', 'title') ? $config->get('app', 'title') : 'GitList'; + $this['date.format'] = $config->get('date', 'format') ? $config->get('date', 'format') : 'd/m/Y H:i:s'; $this['filetypes'] = $config->getSection('filetypes'); $this['binary_filetypes'] = $config->getSection('binary_filetypes'); $this['cache.archives'] = $this->getCachePath() . 'archives'; $this['avatar.url'] = $config->get('avatar', 'url'); $this['avatar.query'] = $config->get('avatar', 'query'); - $this['show_http_remote'] = $config->get('clone_button', 'show_http_remote'); - $this['use_https'] = $config->get('clone_button', 'use_https'); - $this['http_url_subdir'] = $config->get('clone_button', 'http_url_subdir'); - $this['http_user'] = $config->get('clone_button', 'http_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'http_user'); - $this['http_host'] = $config->get('clone_button', 'http_host'); - $this['show_ssh_remote'] = $config->get('clone_button', 'show_ssh_remote'); - $this['ssh_user'] = $config->get('clone_button', 'ssh_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'ssh_user'); - $this['ssh_url_subdir'] = $config->get('clone_button', 'ssh_url_subdir'); - $this['ssh_host'] = $config->get('clone_button', 'ssh_host'); // Register services - $this->register(new TwigServiceProvider(), array( - 'twig.path' => array($this->getThemePath($this['theme']), $this->getThemePath('default')), - 'twig.options' => $config->get('app', 'cache') ? - array('cache' => $this->getCachePath() . 'views') : array(), - )); + $this->register(new TwigServiceProvider(), [ + 'twig.path' => [$this->getThemePath($this['theme']), $this->getThemePath('default')], + 'twig.options' => $config->get('app', 'cache') ? + ['cache' => $this->getCachePath() . 'views'] : [], + ]); $repositories = $config->get('git', 'repositories'); $this['git.projects'] = $config->get('git', 'project_list') ? $this->parseProjectList($config->get('git', 'project_list')) : false; - $this->register(new GitServiceProvider(), array( - 'git.client' => $config->get('git', 'client'), - 'git.repos' => $repositories, - 'ini.file' => "config.ini", - 'git.hidden' => $config->get('git', 'hidden') ? - $config->get('git', 'hidden') : array(), + $this->register(new GitServiceProvider(), [ + 'git.client' => $config->get('git', 'client'), + 'git.repos' => $repositories, + 'ini.file' => 'config.ini', + 'git.hidden' => $config->get('git', 'hidden') ? + $config->get('git', 'hidden') : [], 'git.default_branch' => $config->get('git', 'default_branch') ? $config->get('git', 'default_branch') : 'master', - )); + ]); $this->register(new ViewUtilServiceProvider()); $this->register(new RepositoryUtilServiceProvider()); - $this->register(new UrlGeneratorServiceProvider()); + $this->register(new RoutingServiceProvider()); $this->register(new RoutingUtilServiceProvider()); - $this['twig'] = $this->share($this->extend('twig', function ($twig, $app) { + $this->extend('twig', function ($twig, $app) use ($config) { $twig->addFilter(new \Twig_SimpleFilter('htmlentities', 'htmlentities')); $twig->addFilter(new \Twig_SimpleFilter('md5', 'md5')); - $twig->addFilter(new \Twig_SimpleFilter('format_date', array($app, 'formatDate'))); - $twig->addFilter(new \Twig_SimpleFilter('format_size', array($app, 'formatSize'))); - $twig->addFunction(new \Twig_SimpleFunction('avatar', array($app, 'getAvatar'))); + $twig->addFilter(new \Twig_SimpleFilter('format_date', [$app, 'formatDate'])); + $twig->addFilter(new \Twig_SimpleFilter('format_size', [$app, 'formatSize'])); + $twig->addFunction(new \Twig_SimpleFunction('avatar', [$app, 'getAvatar'])); + $twig->addGlobal('theme', $app['theme']); + $twig->addGlobal('title', $config->get('app', 'title') ? $config->get('app', 'title') : 'GitList'); + $twig->addGlobal('show_http_remote', $config->get('clone_button', 'show_http_remote')); + $twig->addGlobal('use_https', $config->get('clone_button', 'use_https')); + $twig->addGlobal('http_url_subdir', $config->get('clone_button', 'http_url_subdir')); + $twig->addGlobal('http_user', $config->get('clone_button', 'http_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'http_user')); + $twig->addGlobal('http_host', $config->get('clone_button', 'http_host')); + $twig->addGlobal('show_ssh_remote', $config->get('clone_button', 'show_ssh_remote')); + $twig->addGlobal('ssh_user', $config->get('clone_button', 'ssh_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'ssh_user')); + $twig->addGlobal('ssh_url_subdir', $config->get('clone_button', 'ssh_url_subdir')); + $twig->addGlobal('ssh_host', $config->get('clone_button', 'ssh_host')); return $twig; - })); + }); - $this['escaper.argument'] = $this->share(function() { + $this['escaper.argument'] = function () { return new Escaper\ArgumentEscaper(); - }); + }; // Handle errors $this->error(function (\Exception $e, $code) use ($app) { @@ -96,9 +97,9 @@ public function __construct(Config $config, $root = null) return; } - return $app['twig']->render('error.twig', array( + return $app['twig']->render('error.twig', [ 'message' => $e->getMessage(), - )); + ]); }); $this->finish(function () use ($app, $config) { @@ -117,21 +118,26 @@ public function formatDate($date) public function formatSize($size) { $mod = 1000; - $units = array('B', 'kB', 'MB', 'GB'); - for($i = 0; $size > $mod; $i++) $size /= $mod; + $units = ['B', 'kB', 'MB', 'GB']; + for ($i = 0; $size > $mod; $i++) { + $size /= $mod; + } + return round($size, 2) . $units[$i]; } public function getAvatar($email, $size) { - $url = $this['avatar.url'] ? $this['avatar.url'] : "//gravatar.com/avatar/"; - $query = array("s=$size"); - if (is_string($this['avatar.query'])) + $url = $this['avatar.url'] ? $this['avatar.url'] : '//gravatar.com/avatar/'; + $query = ["s=$size"]; + if (is_string($this['avatar.query'])) { $query[] = $this['avatar.query']; - else if (is_array($this['avatar.query'])) + } elseif (is_array($this['avatar.query'])) { $query = array_merge($query, $this['avatar.query']); + } $id = md5(strtolower($email)); - return $url . $id . "?" . implode('&', $query); + + return $url . $id . '?' . implode('&', $query); } public function getPath() @@ -168,11 +174,13 @@ public function getThemePath($theme) public function parseProjectList($project_list) { - $projects = array(); - $file = fopen($project_list, "r"); - while ($file && !feof($file)) + $projects = []; + $file = fopen($project_list, 'r'); + while ($file && !feof($file)) { $projects[] = trim(fgets($file)); + } fclose($file); + return $projects; } } diff --git a/src/Config.php b/src/Config.php index fab9338b..3d9f53e1 100644 --- a/src/Config.php +++ b/src/Config.php @@ -6,6 +6,11 @@ class Config { protected $data; + public function __construct($data = []) + { + $this->data = $data; + } + public static function fromFile($file) { if (!file_exists($file)) { @@ -19,11 +24,6 @@ public static function fromFile($file) return $config; } - public function __construct($data = array()) - { - $this->data = $data; - } - public function get($section, $option) { if (!array_key_exists($section, $this->data)) { @@ -67,12 +67,11 @@ protected function validateOptions() } if (!$atLeastOneOk) { - die("Please, edit the config file and provide your repositories directory"); + die('Please, edit the config file and provide your repositories directory'); } if ($atLeastOneWrong) { - die("One or more of the supplied repository paths appears to be wrong. Please, check the config file"); + die('One or more of the supplied repository paths appears to be wrong. Please, check the config file'); } } } - diff --git a/src/Controller/BlobController.php b/src/Controller/BlobController.php index 81644059..4bcd6772 100644 --- a/src/Controller/BlobController.php +++ b/src/Controller/BlobController.php @@ -2,8 +2,8 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; use Symfony\Component\HttpFoundation\Response; class BlobController implements ControllerProviderInterface @@ -25,22 +25,22 @@ public function connect(Application $app) $fileType = $app['util.repository']->getFileType($file); if ($fileType !== 'image' && $app['util.repository']->isBinary($file)) { - return $app->redirect($app['url_generator']->generate('blob_raw', array( - 'repo' => $repo, + return $app->redirect($app['url_generator']->generate('blob_raw', [ + 'repo' => $repo, 'commitishPath' => $commitishPath, - ))); + ])); } - return $app['twig']->render('file.twig', array( - 'file' => $file, - 'fileType' => $fileType, - 'blob' => $blob->output(), - 'repo' => $repo, - 'branch' => $branch, - 'breadcrumbs' => $breadcrumbs, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - )); + return $app['twig']->render('file.twig', [ + 'file' => $file, + 'fileType' => $fileType, + 'blob' => $blob->output(), + 'repo' => $repo, + 'branch' => $branch, + 'breadcrumbs' => $breadcrumbs, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', '.+') ->convert('commitishPath', 'escaper.argument:escape') @@ -56,9 +56,9 @@ public function connect(Application $app) $blob = $repository->getBlob("$branch:\"$file\"")->output(); - $headers = array(); + $headers = []; if ($app['util.repository']->isBinary($file)) { - $headers['Content-Disposition'] = 'attachment; filename="' . $file . '"'; + $headers['Content-Disposition'] = 'attachment; filename="' . $file . '"'; $headers['Content-Type'] = 'application/octet-stream'; } else { $headers['Content-Type'] = 'text/plain'; @@ -79,12 +79,12 @@ public function connect(Application $app) $filePatchesLog = $repository->getCommitsLogPatch($file); $breadcrumbs = $app['util.view']->getBreadcrumbs($file); - return $app['twig']->render('logpatch.twig', array( - 'branch' => $branch, - 'repo' => $repo, - 'breadcrumbs' => $breadcrumbs, - 'commits' => $filePatchesLog, - )); + return $app['twig']->render('logpatch.twig', [ + 'branch' => $branch, + 'repo' => $repo, + 'breadcrumbs' => $breadcrumbs, + 'commits' => $filePatchesLog, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', '.+') ->convert('commitishPath', 'escaper.argument:escape') @@ -93,4 +93,3 @@ public function connect(Application $app) return $route; } } - diff --git a/src/Controller/CommitController.php b/src/Controller/CommitController.php index 7702a298..b48d3de2 100644 --- a/src/Controller/CommitController.php +++ b/src/Controller/CommitController.php @@ -2,8 +2,8 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; use Symfony\Component\HttpFoundation\Request; class CommitController implements ControllerProviderInterface @@ -16,12 +16,13 @@ public function connect(Application $app) $subRequest = Request::create( '/' . $repo . '/commits/master/search', 'POST', - array('query' => $request->get('query')) + ['query' => $request->get('query')] ); + return $app->handle($subRequest, \Symfony\Component\HttpKernel\HttpKernelInterface::SUB_REQUEST); })->assert('repo', $app['util.routing']->getRepositoryRegex()); - $route->get('{repo}/commits/{commitishPath}', function ($repo, $commitishPath) use ($app) { + $route->get('{repo}/commits/{commitishPath}', function (Request $request, $repo, $commitishPath) use ($app) { $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); if ($commitishPath === null) { @@ -34,9 +35,9 @@ public function connect(Application $app) list($branch, $file) = $app['util.repository']->extractRef($repository, $branch, $file); $type = $file ? "$branch -- \"$file\"" : $branch; - $pager = $app['util.view']->getPager($app['request']->get('page'), $repository->getTotalCommits($type)); + $pager = $app['util.view']->getPager($request->get('page'), $repository->getTotalCommits($type)); $commits = $repository->getPaginatedCommits($type, $pager['current']); - $categorized = array(); + $categorized = []; foreach ($commits as $commit) { $date = $commit->getCommiterDate(); @@ -44,18 +45,18 @@ public function connect(Application $app) $categorized[$date][] = $commit; } - $template = $app['request']->isXmlHttpRequest() ? 'commits_list.twig' : 'commits.twig'; - - return $app['twig']->render($template, array( - 'page' => 'commits', - 'pager' => $pager, - 'repo' => $repo, - 'branch' => $branch, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'commits' => $categorized, - 'file' => $file, - )); + $template = $request->isXmlHttpRequest() ? 'commits_list.twig' : 'commits.twig'; + + return $app['twig']->render($template, [ + 'page' => 'commits', + 'pager' => $pager, + 'repo' => $repo, + 'branch' => $branch, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'commits' => $categorized, + 'file' => $file, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) ->value('commitishPath', null) @@ -67,7 +68,7 @@ public function connect(Application $app) $query = $request->get('query'); $commits = $repository->searchCommitLog($query, $branch); - $categorized = array(); + $categorized = []; foreach ($commits as $commit) { $date = $commit->getCommiterDate(); @@ -75,15 +76,15 @@ public function connect(Application $app) $categorized[$date][] = $commit; } - return $app['twig']->render('searchcommits.twig', array( - 'repo' => $repo, - 'branch' => $branch, - 'file' => '', - 'commits' => $categorized, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'query' => $query - )); + return $app['twig']->render('searchcommits.twig', [ + 'repo' => $repo, + 'branch' => $branch, + 'file' => '', + 'commits' => $categorized, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'query' => $query, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->convert('branch', 'escaper.argument:escape') @@ -94,11 +95,11 @@ public function connect(Application $app) $commit = $repository->getCommit($commit); $branch = $repository->getHead(); - return $app['twig']->render('commit.twig', array( - 'branch' => $branch, - 'repo' => $repo, - 'commit' => $commit, - )); + return $app['twig']->render('commit.twig', [ + 'branch' => $branch, + 'repo' => $repo, + 'commit' => $commit, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commit', '[a-f0-9^]+') ->bind('commit'); @@ -113,14 +114,14 @@ public function connect(Application $app) $blames = $repository->getBlame("$branch -- \"$file\""); - return $app['twig']->render('blame.twig', array( - 'file' => $file, - 'repo' => $repo, - 'branch' => $branch, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'blames' => $blames, - )); + return $app['twig']->render('blame.twig', [ + 'file' => $file, + 'repo' => $repo, + 'branch' => $branch, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'blames' => $blames, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) ->convert('commitishPath', 'escaper.argument:escape') @@ -129,4 +130,3 @@ public function connect(Application $app) return $route; } } - diff --git a/src/Controller/MainController.php b/src/Controller/MainController.php index 92de6aef..d372f34b 100644 --- a/src/Controller/MainController.php +++ b/src/Controller/MainController.php @@ -2,10 +2,10 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; -use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; class MainController implements ControllerProviderInterface { @@ -13,21 +13,20 @@ public function connect(Application $app) { $route = $app['controllers_factory']; - $route->get('/', function() use ($app) { + $route->get('/', function () use ($app) { $repositories = $app['git']->getRepositories($app['git.repos']); - return $app['twig']->render('index.twig', array( - 'repositories' => $repositories, - )); + return $app['twig']->render('index.twig', [ + 'repositories' => $repositories, + ]); })->bind('homepage'); - - $route->get('/refresh', function(Request $request) use ($app ) { - # Go back to calling page + $route->get('/refresh', function (Request $request) use ($app) { + // Go back to calling page return $app->redirect($request->headers->get('Referer')); })->bind('refresh'); - $route->get('{repo}/stats/{branch}', function($repo, $branch) use ($app) { + $route->get('{repo}/stats/{branch}', function ($repo, $branch) use ($app) { $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); if ($branch === null) { @@ -37,21 +36,21 @@ public function connect(Application $app) $stats = $repository->getStatistics($branch); $authors = $repository->getAuthorStatistics($branch); - return $app['twig']->render('stats.twig', array( - 'repo' => $repo, - 'branch' => $branch, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'stats' => $stats, - 'authors' => $authors, - )); + return $app['twig']->render('stats.twig', [ + 'repo' => $repo, + 'branch' => $branch, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'stats' => $stats, + 'authors' => $authors, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->value('branch', null) ->convert('branch', 'escaper.argument:escape') ->bind('stats'); - $route->get('{repo}/{branch}/rss/', function($repo, $branch) use ($app) { + $route->get('{repo}/{branch}/rss/', function ($repo, $branch) use ($app) { $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); if ($branch === null) { @@ -60,13 +59,13 @@ public function connect(Application $app) $commits = $repository->getPaginatedCommits($branch); - $html = $app['twig']->render('rss.twig', array( - 'repo' => $repo, - 'branch' => $branch, - 'commits' => $commits, - )); + $html = $app['twig']->render('rss.twig', [ + 'repo' => $repo, + 'branch' => $branch, + 'commits' => $commits, + ]); - return new Response($html, 200, array('Content-Type' => 'application/rss+xml')); + return new Response($html, 200, ['Content-Type' => 'application/rss+xml']); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->value('branch', null) diff --git a/src/Controller/NetworkController.php b/src/Controller/NetworkController.php index 27f8a194..c0e7b903 100644 --- a/src/Controller/NetworkController.php +++ b/src/Controller/NetworkController.php @@ -4,9 +4,8 @@ use GitList\Git\Repository; use Gitter\Model\Commit\Commit; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; -use Symfony\Component\HttpFoundation\Request; class NetworkController implements ControllerProviderInterface { @@ -14,7 +13,8 @@ public function connect(Application $app) { $route = $app['controllers_factory']; - $route->get('{repo}/network/{commitishPath}/{page}.json', + $route->get( + '{repo}/network/{commitishPath}/{page}.json', function ($repo, $commitishPath, $page) use ($app) { /** @var $repository Repository */ $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); @@ -26,29 +26,29 @@ function ($repo, $commitishPath, $page) use ($app) { $pager = $app['util.view']->getPager($page, $repository->getTotalCommits($commitishPath)); $commits = $repository->getPaginatedCommits($commitishPath, $pager['current']); - $jsonFormattedCommits = array(); + $jsonFormattedCommits = []; foreach ($commits as $commit) { $detailsUrl = $app['url_generator']->generate( 'commit', - array( + [ 'repo' => $repo, - 'commit' => $commit->getHash() - ) + 'commit' => $commit->getHash(), + ] ); - $jsonFormattedCommits[$commit->getHash()] = array( + $jsonFormattedCommits[$commit->getHash()] = [ 'hash' => $commit->getHash(), 'parentsHash' => $commit->getParentsHash(), 'date' => $commit->getDate()->format('U'), 'message' => htmlentities($commit->getMessage()), 'details' => $detailsUrl, - 'author' => array( + 'author' => [ 'name' => $commit->getAuthor()->getName(), 'email' => $commit->getAuthor()->getEmail(), - 'image' => $app->getAvatar($commit->getAuthor()->getEmail(), 40) - ) - ); + 'image' => $app->getAvatar($commit->getAuthor()->getEmail(), 40), + ], + ]; } $nextPageUrl = null; @@ -56,34 +56,37 @@ function ($repo, $commitishPath, $page) use ($app) { if ($pager['last'] !== $pager['current']) { $nextPageUrl = $app['url_generator']->generate( 'networkData', - array( + [ 'repo' => $repo, 'commitishPath' => $commitishPath, - 'page' => $pager['next'] - ) + 'page' => $pager['next'], + ] ); } // when no commits are given, return an empty response - issue #369 if (count($commits) === 0) { return $app->json( - array( + [ 'repo' => $repo, 'commitishPath' => $commitishPath, 'nextPage' => null, 'start' => null, - 'commits' => $jsonFormattedCommits - ), 200 + 'commits' => $jsonFormattedCommits, + ], + 200 ); } - return $app->json( array( + return $app->json( + [ 'repo' => $repo, 'commitishPath' => $commitishPath, 'nextPage' => $nextPageUrl, 'start' => $commits[0]->getHash(), - 'commits' => $jsonFormattedCommits - ), 200 + 'commits' => $jsonFormattedCommits, + ], + 200 ); } )->assert('repo', $app['util.routing']->getRepositoryRegex()) @@ -108,11 +111,11 @@ function ($repo, $commitishPath) use ($app) { return $app['twig']->render( 'network.twig', - array( + [ 'repo' => $repo, 'branch' => $branch, 'commitishPath' => $commitishPath, - ) + ] ); } )->assert('repo', $app['util.routing']->getRepositoryRegex()) diff --git a/src/Controller/TreeController.php b/src/Controller/TreeController.php index d3d9fe69..7d185ea8 100644 --- a/src/Controller/TreeController.php +++ b/src/Controller/TreeController.php @@ -2,10 +2,10 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; -use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Symfony\Component\HttpFoundation\Request; class TreeController implements ControllerProviderInterface { @@ -32,17 +32,17 @@ public function connect(Application $app) $parent = ''; } - return $app['twig']->render('tree.twig', array( - 'files' => $files->output(), - 'repo' => $repo, - 'branch' => $branch, - 'path' => $tree ? $tree . '/' : $tree, - 'parent' => $parent, - 'breadcrumbs' => $breadcrumbs, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'readme' => $app['util.repository']->getReadme($repository, $branch, $tree ? "$tree" : ""), - )); + return $app['twig']->render('tree.twig', [ + 'files' => $files->output(), + 'repo' => $repo, + 'branch' => $branch, + 'path' => $tree ? $tree . '/' : $tree, + 'parent' => $parent, + 'breadcrumbs' => $breadcrumbs, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'readme' => $app['util.repository']->getReadme($repository, $branch, $tree ? "$tree" : ''), + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) ->convert('commitishPath', 'escaper.argument:escape') @@ -55,25 +55,25 @@ public function connect(Application $app) } $query = $request->get('query'); - $breadcrumbs = array(array('dir' => 'Search results for: ' . $query, 'path' => '')); + $breadcrumbs = [['dir' => 'Search results for: ' . $query, 'path' => '']]; $results = $repository->searchTree($query, $branch); - return $app['twig']->render('search.twig', array( - 'results' => $results, - 'repo' => $repo, - 'branch' => $branch, - 'path' => $tree, - 'breadcrumbs' => $breadcrumbs, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'query' => $query - )); + return $app['twig']->render('search.twig', [ + 'results' => $results, + 'repo' => $repo, + 'branch' => $branch, + 'path' => $tree, + 'breadcrumbs' => $breadcrumbs, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'query' => $query, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->convert('branch', 'escaper.argument:escape') ->bind('search'); - $route->get('{repo}/{format}ball/{branch}', function($repo, $format, $branch) use ($app) { + $route->get('{repo}/{format}ball/{branch}', function ($repo, $format, $branch) use ($app) { $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); $tree = $repository->getBranchTree($branch); @@ -95,14 +95,15 @@ public function connect(Application $app) /** * Generating name for downloading, lowercasing and removing all non - * ascii and special characters + * ascii and special characters. */ - $filename = strtolower($repo.'_'.$branch); + $filename = strtolower($repo . '_' . $branch); $filename = preg_replace('#[^a-z0-9]+#', '_', $filename); $filename = $filename . '.' . $format; $response = new BinaryFileResponse($file); $response->setContentDisposition('attachment', $filename); + return $response; })->assert('format', '(zip|tar)') ->assert('repo', $app['util.routing']->getRepositoryRegex()) @@ -110,15 +111,14 @@ public function connect(Application $app) ->convert('branch', 'escaper.argument:escape') ->bind('archive'); - - $route->get('{repo}/{branch}/', function($repo, $branch) use ($app, $treeController) { + $route->get('{repo}/{branch}/', function ($repo, $branch) use ($app, $treeController) { return $treeController($repo, $branch); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->convert('branch', 'escaper.argument:escape') ->bind('branch'); - $route->get('{repo}/', function($repo) use ($app, $treeController) { + $route->get('{repo}/', function ($repo) use ($app, $treeController) { return $treeController($repo); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->bind('repository'); @@ -126,4 +126,3 @@ public function connect(Application $app) return $route; } } - diff --git a/src/Controller/TreeGraphController.php b/src/Controller/TreeGraphController.php index ecf0c06b..0e9a4e92 100644 --- a/src/Controller/TreeGraphController.php +++ b/src/Controller/TreeGraphController.php @@ -2,9 +2,8 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; -use Symfony\Component\HttpFoundation\Request; class TreeGraphController implements ControllerProviderInterface { @@ -22,26 +21,26 @@ function ($repo, $commitishPath) use ($app) { '--pretty=format:"B[%d] C[%H] D[%ad] A[%an] E[%ae] H[%h] S[%s]"'; $rawRows = $repository->getClient()->run($repository, $command); $rawRows = explode("\n", $rawRows); - $graphItems = array(); + $graphItems = []; foreach ($rawRows as $row) { if (preg_match("/^(.+?)(\s(B\[(.*?)\])? C\[(.+?)\] D\[(.+?)\] A\[(.+?)\] E\[(.+?)\] H\[(.+?)\] S\[(.+?)\])?$/", $row, $output)) { if (!isset($output[4])) { - $graphItems[] = array( - "relation"=>$output[1] - ); + $graphItems[] = [ + 'relation' => $output[1], + ]; continue; } - $graphItems[] = array( - "relation"=>$output[1], - "branch"=>$output[4], - "rev"=>$output[5], - "date"=>$output[6], - "author"=>$output[7], - "author_email"=>$output[8], - "short_rev"=>$output[9], - "subject"=>preg_replace('/(^|\s)(#[[:xdigit:]]+)(\s|$)/', '$1$2$3', $output[10]) - ); + $graphItems[] = [ + 'relation' => $output[1], + 'branch' => $output[4], + 'rev' => $output[5], + 'date' => $output[6], + 'author' => $output[7], + 'author_email' => $output[8], + 'short_rev' => $output[9], + 'subject' => preg_replace('/(^|\s)(#[[:xdigit:]]+)(\s|$)/', '$1$2$3', $output[10]), + ]; } } @@ -54,12 +53,12 @@ function ($repo, $commitishPath) use ($app) { return $app['twig']->render( 'treegraph.twig', - array( + [ 'repo' => $repo, 'branch' => $branch, 'commitishPath' => $commitishPath, 'graphItems' => $graphItems, - ) + ] ); } )->assert('repo', $app['util.routing']->getRepositoryRegex()) diff --git a/src/Exception/BlankDataException.php b/src/Exception/BlankDataException.php index 1293fbb9..e7932485 100644 --- a/src/Exception/BlankDataException.php +++ b/src/Exception/BlankDataException.php @@ -4,5 +4,4 @@ class BlankDataException extends \RuntimeException { - } diff --git a/src/Exception/EmptyRepositoryException.php b/src/Exception/EmptyRepositoryException.php index 027a4d75..40a83b8b 100644 --- a/src/Exception/EmptyRepositoryException.php +++ b/src/Exception/EmptyRepositoryException.php @@ -4,5 +4,4 @@ class EmptyRepositoryException extends \RuntimeException { - } diff --git a/src/Git/Client.php b/src/Git/Client.php index 0dae86e4..5695412d 100644 --- a/src/Git/Client.php +++ b/src/Git/Client.php @@ -27,15 +27,16 @@ public function getRepositoryFromName($paths, $repo) } /** - * Searches for valid repositories on the specified path + * Searches for valid repositories on the specified path. * * @param array $paths Array of paths where repositories will be searched + * * @return array Found repositories, containing their name, path and description sorted * by repository name */ public function getRepositories($paths) { - $allRepositories = array(); + $allRepositories = []; foreach ($paths as $path) { $repositories = $this->recurseDirectory($path); @@ -45,102 +46,62 @@ public function getRepositories($paths) } /** - * Use "+" to preserve keys, only a problem with numeric repos + * Use "+" to preserve keys, only a problem with numeric repos. */ $allRepositories = $allRepositories + $repositories; } $allRepositories = array_unique($allRepositories, SORT_REGULAR); - uksort($allRepositories, function($k1, $k2) { - return strtolower($k2)isDot()) { - continue; - } - - if (strrpos($file->getFilename(), '.') === 0) { - continue; - } - - if (!$file->isReadable()) { - continue; - } - - if ($file->isDir()) { - $isBare = file_exists($file->getPathname() . '/HEAD'); - $isRepository = file_exists($file->getPathname() . '/.git/HEAD'); - - if ($isRepository || $isBare) { - - $hidden = function($path, $hide) { - - $return = false; - - array_walk($hide, function($value, $key) use ($path, &$return) { - if ( ($path === $value) || (1 === preg_match($value, $path)) ) { - $return = true; - } - }); - return $return; - }; - - if ($hidden($file->getPathname(), $this->getHidden())) { - continue; - } - - if ($isBare) { - $description = $file->getPathname() . '/description'; - } else { - $description = $file->getPathname() . '/.git/description'; - } - - if (file_exists($description)) { - $description = file_get_contents($description); - } else { - $description = null; - } + return $this->defaultBranch; + } - if (!$topLevel) { - $repoName = $file->getPathInfo()->getFilename() . '/' . $file->getFilename(); - } else { - $repoName = $file->getFilename(); - } + /** + * Overloads the parent::createRepository method for the correct Repository class instance. + * + * {@inheritdoc} + */ + public function createRepository($path, $bare = null) + { + if (file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { + throw new \RuntimeException('A GIT repository already exists at ' . $path); + } - if (is_array($this->getProjects()) && !in_array($repoName, $this->getProjects())) { - continue; - } + $repository = new Repository($path, $this); - $repositories[$repoName] = array( - 'name' => $repoName, - 'path' => $file->getPathname(), - 'description' => $description - ); + return $repository->create($bare); + } - continue; - } else { - $repositories = array_merge($repositories, $this->recurseDirectory($file->getPathname(), false)); - } - } + /** + * Overloads the parent::getRepository method for the correct Repository class instance. + * + * {@inheritdoc} + */ + public function getRepository($path) + { + if (!file_exists($path) || !file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { + throw new \RuntimeException('There is no GIT repository at ' . $path); } - return $repositories; + return new Repository($path, $this); } /** * Set default branch as a string. * - * @param string $branch Name of branch to use when repo's HEAD is detached. + * @param string $branch name of branch to use when repo's HEAD is detached + * * @return object */ protected function setDefaultBranch($branch) @@ -151,15 +112,7 @@ protected function setDefaultBranch($branch) } /** - * Return name of default branch as a string. - */ - public function getDefaultBranch() - { - return $this->defaultBranch; - } - - /** - * Get hidden repository list + * Get hidden repository list. * * @return array List of repositories to hide */ @@ -169,9 +122,10 @@ protected function getHidden() } /** - * Set the hidden repository list + * Set the hidden repository list. * * @param array $hidden List of repositories to hide + * * @return object */ protected function setHidden($hidden) @@ -182,7 +136,7 @@ protected function setHidden($hidden) } /** - * Get project list + * Get project list. * * @return array List of repositories to show */ @@ -192,7 +146,7 @@ protected function getProjects() } /** - * Set the shown repository list + * Set the shown repository list. * * @param array $projects List of repositories to show */ @@ -203,34 +157,80 @@ protected function setProjects($projects) return $this; } - /** - * Overloads the parent::createRepository method for the correct Repository class instance - * - * {@inheritdoc} - */ - public function createRepository($path, $bare = null) + private function recurseDirectory($path, $topLevel = true) { - if (file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { - throw new \RuntimeException('A GIT repository already exists at ' . $path); - } + $dir = new \DirectoryIterator($path); - $repository = new Repository($path, $this); + $repositories = []; - return $repository->create($bare); - } + foreach ($dir as $file) { + if ($file->isDot()) { + continue; + } - /** - * Overloads the parent::getRepository method for the correct Repository class instance - * - * {@inheritdoc} - */ - public function getRepository($path) - { - if (!file_exists($path) || !file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { - throw new \RuntimeException('There is no GIT repository at ' . $path); + if (strrpos($file->getFilename(), '.') === 0) { + continue; + } + + if (!$file->isReadable()) { + continue; + } + + if ($file->isDir()) { + $isBare = file_exists($file->getPathname() . '/HEAD'); + $isRepository = file_exists($file->getPathname() . '/.git/HEAD'); + + if ($isRepository || $isBare) { + $hidden = function ($path, $hide) { + $return = false; + + array_walk($hide, function ($value, $key) use ($path, &$return) { + if (($path === $value) || (1 === preg_match($value, $path))) { + $return = true; + } + }); + + return $return; + }; + + if ($hidden($file->getPathname(), $this->getHidden())) { + continue; + } + + if ($isBare) { + $description = $file->getPathname() . '/description'; + } else { + $description = $file->getPathname() . '/.git/description'; + } + + if (file_exists($description)) { + $description = file_get_contents($description); + } else { + $description = null; + } + + if (!$topLevel) { + $repoName = $file->getPathInfo()->getFilename() . '/' . $file->getFilename(); + } else { + $repoName = $file->getFilename(); + } + + if (is_array($this->getProjects()) && !in_array($repoName, $this->getProjects())) { + continue; + } + + $repositories[$repoName] = [ + 'name' => $repoName, + 'path' => $file->getPathname(), + 'description' => $description, + ]; + + continue; + } + $repositories = array_merge($repositories, $this->recurseDirectory($file->getPathname(), false)); + } } - return new Repository($path, $this); + return $repositories; } } - diff --git a/src/Git/Repository.php b/src/Git/Repository.php index 0040ee32..4435b114 100644 --- a/src/Git/Repository.php +++ b/src/Git/Repository.php @@ -2,10 +2,10 @@ namespace GitList\Git; -use Gitter\Repository as BaseRepository; use Gitter\Model\Commit\Commit; use Gitter\Model\Commit\Diff; use Gitter\PrettyFormat; +use Gitter\Repository as BaseRepository; use Symfony\Component\Filesystem\Filesystem; class Repository extends BaseRepository @@ -14,7 +14,8 @@ class Repository extends BaseRepository * Return true if the repo contains this commit. * * @param $commitHash Hash of commit whose existence we want to check - * @return boolean Whether or not the commit exists in this repo + * + * @return bool Whether or not the commit exists in this repo */ public function hasCommit($commitHash) { @@ -27,7 +28,7 @@ public function hasCommit($commitHash) /** * Get the current branch, returning a default value when HEAD is detached. */ - public function getHead($default = NULL) + public function getHead($default = null) { $client = $this->getClient(); @@ -35,27 +36,29 @@ public function getHead($default = NULL) } /** - * Show Patches that where apllied to the selected file + * Show Patches that where apllied to the selected file. * * @param string $file File path for which we will retrieve a list of patch logs + * * @return array Collection of Commits data */ public function getCommitsLogPatch($file) { - $record_delimiter = chr(hexdec("0x1e")); - $file_patches = $this->getClient()->run($this, - "log -p --pretty=format:\"".$record_delimiter."%H" - . "%h%T%P" - . "%aN%aE" - . "%at%cN%cE" - . "%ct" - . "" - . "" + $record_delimiter = chr(hexdec('0x1e')); + $file_patches = $this->getClient()->run( + $this, + 'log -p --pretty=format:"' . $record_delimiter . '%H' + . '%h%T%P' + . '%aN%aE' + . '%at%cN%cE' + . '%ct' + . '' + . '' . "\" $file" ); - $patch_collection = array(); - foreach ( preg_split('/('.$record_delimiter.'\)/', $file_patches,null, PREG_SPLIT_NO_EMPTY) as $patches) { + $patch_collection = []; + foreach (preg_split('/(' . $record_delimiter . '\)/', $file_patches, null, PREG_SPLIT_NO_EMPTY) as $patches) { $patches = '' . $patches; $xmlEnd = strpos($patches, '') + 7; $commitInfo = substr($patches, 0, $xmlEnd); @@ -63,9 +66,9 @@ public function getCommitsLogPatch($file) $logs = explode("\n", $commitData); // Read commit metadata - $format = new PrettyFormat; + $format = new PrettyFormat(); $data = $format->parse($commitInfo); - $commit = new Commit; + $commit = new Commit(); $commit->importData($data[0]); $commit->setDiffs($this->readDiffLogs($logs)); $patch_collection[] = $commit; @@ -75,21 +78,23 @@ public function getCommitsLogPatch($file) } /** - * Show the data from a specific commit + * Show the data from a specific commit. * * @param string $commitHash Hash of the specific commit to read data + * * @return array Commit data */ public function getCommit($commitHash) { - $logs = $this->getClient()->run($this, - "show --pretty=format:\"%H" - . "%h%T%P" - . "%aN%aE" - . "%at%cN%cE" - . "%ct" - . "" - . "" + $logs = $this->getClient()->run( + $this, + 'show --pretty=format:"%H' + . '%h%T%P' + . '%aN%aE' + . '%at%cN%cE' + . '%ct' + . '' + . '' . "\" $commitHash" ); @@ -99,9 +104,9 @@ public function getCommit($commitHash) $logs = explode("\n", $commitData); // Read commit metadata - $format = new PrettyFormat; + $format = new PrettyFormat(); $data = $format->parse($commitInfo); - $commit = new Commit; + $commit = new Commit(); $commit->importData($data[0]); if ($commit->getParentsHash()) { @@ -115,14 +120,15 @@ public function getCommit($commitHash) } /** - * Blames the provided file and parses the output + * Blames the provided file and parses the output. * * @param string $file File that will be blamed + * * @return array Commits hashes containing the lines */ public function getBlame($file) { - $blame = array(); + $blame = []; $logs = $this->getClient()->run($this, "blame --root -sl $file"); $logs = explode("\n", $logs); @@ -138,11 +144,11 @@ public function getBlame($file) $currentCommit = $match[1][0]; if ($currentCommit != $previousCommit) { ++$i; - $blame[$i] = array( + $blame[$i] = [ 'line' => '', 'commit' => $currentCommit, - 'commitShort' => substr($currentCommit, 0, 8) - ); + 'commitShort' => substr($currentCommit, 0, 8), + ]; } $blame[$i]['line'] .= $match[3][0] . PHP_EOL; @@ -153,19 +159,20 @@ public function getBlame($file) } /** - * Read diff logs and generate a collection of diffs + * Read diff logs and generate a collection of diffs. * * @param array $logs Array of log rows + * * @return array Array of diffs */ public function readDiffLogs(array $logs) { - $diffs = array(); + $diffs = []; $lineNumOld = 0; $lineNumNew = 0; foreach ($logs as $log) { - # Skip empty lines - if ($log == "") { + // Skip empty lines + if ($log == '') { continue; } @@ -174,7 +181,7 @@ public function readDiffLogs(array $logs) $diffs[] = $diff; } - $diff = new Diff; + $diff = new Diff(); if (preg_match('/^diff --[\S]+ a\/?(.+) b\/?/', $log, $name)) { $diff->setFile($name[1]); } @@ -198,7 +205,7 @@ public function readDiffLogs(array $logs) // Handle binary files properly. if ('Binary' === substr($log, 0, 6)) { - $m = array(); + $m = []; if (preg_match('/Binary files (.+) and (.+) differ/', $log, $m)) { $diff->setOld($m[1]); $diff->setNew(" {$m[2]}"); @@ -207,16 +214,16 @@ public function readDiffLogs(array $logs) if (!empty($log)) { switch ($log[0]) { - case "@": + case '@': // Set the line numbers preg_match('/@@ -([0-9]+)(?:,[0-9]+)? \+([0-9]+)/', $log, $matches); $lineNumOld = $matches[1] - 1; $lineNumNew = $matches[2] - 1; break; - case "-": + case '-': $lineNumOld++; break; - case "+": + case '+': $lineNumNew++; break; default: @@ -241,11 +248,11 @@ public function readDiffLogs(array $logs) } /** - * Show the repository commit log with pagination + * Show the repository commit log with pagination. * - * @access public * @param string $file * @param int page + * * @return array Commit log */ public function getPaginatedCommits($file = null, $page = 0) @@ -254,12 +261,12 @@ public function getPaginatedCommits($file = null, $page = 0) $pager = "--skip=$page --max-count=15"; $command = "log $pager --pretty=format:\"%H" - . "%h%T%P" - . "%aN%aE" - . "%at%cN" - . "%cE" - . "%ct" - . "\""; + . '%h%T%P' + . '%aN%aE' + . '%at%cN' + . '%cE' + . '%ct' + . '"'; if ($file) { $command .= " $file"; @@ -268,11 +275,11 @@ public function getPaginatedCommits($file = null, $page = 0) try { $logs = $this->getPrettyFormat($command); } catch (\RuntimeException $e) { - return array(); + return []; } foreach ($logs as $log) { - $commit = new Commit; + $commit = new Commit(); $commit->importData($log); $commits[] = $commit; } @@ -283,25 +290,25 @@ public function getPaginatedCommits($file = null, $page = 0) public function searchCommitLog($query, $branch) { $query = escapeshellarg($query); - $query = strtr($query, array('[' => '\\[', ']' => '\\]')); + $query = strtr($query, ['[' => '\\[', ']' => '\\]']); $command = "log --grep={$query} -i --pretty=format:\"%H" - . "%h%T%P" - . "%aN%aE" - . "%at%cN" - . "%cE" - . "%ct" - . "\"" + . '%h%T%P' + . '%aN%aE' + . '%at%cN' + . '%cE' + . '%ct' + . '"' . " $branch"; try { $logs = $this->getPrettyFormat($command); } catch (\RuntimeException $e) { - return array(); + return []; } foreach ($logs as $log) { - $commit = new Commit; + $commit = new Commit(); $commit->importData($log); $commits[] = $commit; } @@ -311,7 +318,7 @@ public function searchCommitLog($query, $branch) public function searchTree($query, $branch) { - if(empty($query)) { + if (empty($query)) { return null; } @@ -333,9 +340,9 @@ public function searchTree($query, $branch) preg_match_all('/([\w-._]+):([^:]+):([0-9]+):(.+)/', $result, $matches, PREG_SET_ORDER); $data['branch'] = $matches[0][1]; - $data['file'] = $matches[0][2]; - $data['line'] = $matches[0][3]; - $data['match'] = $matches[0][4]; + $data['file'] = $matches[0][2]; + $data['line'] = $matches[0][3]; + $data['match'] = $matches[0][4]; $searchResults[] = $data; } @@ -357,7 +364,7 @@ public function getAuthorStatistics($branch) foreach ($logs as $user => $count) { $user = explode('||', $user); - $data[] = array('name' => $user[0], 'email' => $user[1], 'commits' => $count); + $data[] = ['name' => $user[0], 'email' => $user[1], 'commits' => $count]; } return $data; @@ -368,8 +375,8 @@ public function getStatistics($branch) // Calculate amount of files, extensions and file size $logs = $this->getClient()->run($this, 'ls-tree -r -l ' . $branch); $lines = explode("\n", $logs); - $files = array(); - $data['extensions'] = array(); + $files = []; + $data['extensions'] = []; $data['size'] = 0; $data['files'] = 0; @@ -411,7 +418,7 @@ public function getStatistics($branch) } /** - * Create a TAR or ZIP archive of a git tree + * Create a TAR or ZIP archive of a git tree. * * @param string $tree Tree-ish reference * @param string $output Output File name @@ -419,7 +426,7 @@ public function getStatistics($branch) */ public function createArchive($tree, $output, $format = 'zip') { - $fs = new Filesystem; + $fs = new Filesystem(); $fs->mkdir(dirname($output)); $this->getClient()->run($this, "archive --format=$format --output='$output' $tree"); } @@ -427,8 +434,9 @@ public function createArchive($tree, $output, $format = 'zip') /** * Return true if $path exists in $branch; return false otherwise. * - * @param string $commitish Commitish reference; branch, tag, SHA1, etc. - * @param string $path Path whose existence we want to verify. + * @param string $commitish commitish reference; branch, tag, SHA1, etc + * @param string $path path whose existence we want to verify + * * @return bool * * GRIPE Arguably belongs in Gitter, as it's generally useful functionality. @@ -445,4 +453,3 @@ public function pathExists($commitish, $path) return false; } } - diff --git a/src/Provider/GitServiceProvider.php b/src/Provider/GitServiceProvider.php index fd1da259..4e3c0046 100644 --- a/src/Provider/GitServiceProvider.php +++ b/src/Provider/GitServiceProvider.php @@ -3,32 +3,21 @@ namespace GitList\Provider; use GitList\Git\Client; -use Silex\Application; -use Silex\ServiceProviderInterface; +use Pimple\Container; +use Pimple\ServiceProviderInterface; class GitServiceProvider implements ServiceProviderInterface { - - /** - * Register the Git\Client on the Application ServiceProvider - * - * @param Application $app Silex Application - * @return Git\Client Instance of the Git\Client - */ - public function register(Application $app) + public function register(Container $container) { - $app['git'] = function () use ($app) { - $options['path'] = $app['git.client']; - $options['hidden'] = $app['git.hidden']; - $options['projects'] = $app['git.projects']; - $options['ini.file'] = $app['ini.file']; - $options['default_branch'] = $app['git.default_branch']; + $container['git'] = function () use ($container) { + $options['path'] = $container['git.client']; + $options['hidden'] = $container['git.hidden']; + $options['projects'] = $container['git.projects']; + $options['ini.file'] = $container['ini.file']; + $options['default_branch'] = $container['git.default_branch']; return new Client($options); }; } - - public function boot(Application $app) - { - } } diff --git a/src/Provider/RepositoryUtilServiceProvider.php b/src/Provider/RepositoryUtilServiceProvider.php index ed8b4334..a2c7e902 100644 --- a/src/Provider/RepositoryUtilServiceProvider.php +++ b/src/Provider/RepositoryUtilServiceProvider.php @@ -3,24 +3,15 @@ namespace GitList\Provider; use GitList\Util\Repository; -use Silex\Application; -use Silex\ServiceProviderInterface; +use Pimple\Container; +use Pimple\ServiceProviderInterface; class RepositoryUtilServiceProvider implements ServiceProviderInterface { - /** - * Register the Util\Repository class on the Application ServiceProvider - * - * @param Application $app Silex Application - */ - public function register(Application $app) - { - $app['util.repository'] = $app->share(function () use ($app) { - return new Repository($app); - }); - } - - public function boot(Application $app) + public function register(Container $container) { + $container['util.repository'] = function () use ($container) { + return new Repository($container); + }; } } diff --git a/src/Provider/RoutingUtilServiceProvider.php b/src/Provider/RoutingUtilServiceProvider.php index 95b43d6b..82630954 100644 --- a/src/Provider/RoutingUtilServiceProvider.php +++ b/src/Provider/RoutingUtilServiceProvider.php @@ -3,24 +3,15 @@ namespace GitList\Provider; use GitList\Util\Routing; -use Silex\Application; -use Silex\ServiceProviderInterface; +use Pimple\Container; +use Pimple\ServiceProviderInterface; class RoutingUtilServiceProvider implements ServiceProviderInterface { - /** - * Register the Util\Repository class on the Application ServiceProvider - * - * @param Application $app Silex Application - */ - public function register(Application $app) - { - $app['util.routing'] = $app->share(function () use ($app) { - return new Routing($app); - }); - } - - public function boot(Application $app) + public function register(Container $container) { + $container['util.routing'] = function () use ($container) { + return new Routing($container); + }; } } diff --git a/src/Provider/ViewUtilServiceProvider.php b/src/Provider/ViewUtilServiceProvider.php index 87c5d003..b69a0fdd 100644 --- a/src/Provider/ViewUtilServiceProvider.php +++ b/src/Provider/ViewUtilServiceProvider.php @@ -3,24 +3,15 @@ namespace GitList\Provider; use GitList\Util\View; -use Silex\Application; -use Silex\ServiceProviderInterface; +use Pimple\Container; +use Pimple\ServiceProviderInterface; class ViewUtilServiceProvider implements ServiceProviderInterface { - /** - * Register the Util\Interface class on the Application ServiceProvider - * - * @param Application $app Silex Application - */ - public function register(Application $app) - { - $app['util.view'] = $app->share(function () { - return new View; - }); - } - - public function boot(Application $app) + public function register(Container $container) { + $container['util.view'] = function () { + return new View(); + }; } } diff --git a/src/Util/Repository.php b/src/Util/Repository.php index f5304386..e15b590e 100644 --- a/src/Util/Repository.php +++ b/src/Util/Repository.php @@ -8,100 +8,100 @@ class Repository { protected $app; - protected $defaultFileTypes = array( - 'php' => 'php', - 'c' => 'clike', - 'h' => 'clike', - 'cpp' => 'clike', - 'm' => 'clike', - 'mm' => 'clike', - 'ino' => 'clike', - 'cs' => 'text/x-csharp', - 'java' => 'text/x-java', - 'clj' => 'clojure', - 'coffee' => 'coffeescript', - 'css' => 'css', - 'diff' => 'diff', - 'ecl' => 'ecl', - 'el' => 'erlang', - 'go' => 'go', - 'groovy' => 'groovy', - 'hs' => 'haskell', - 'lhs' => 'haskell', - 'jsp' => 'application/x-jsp', - 'asp' => 'htmlembedded', - 'aspx' => 'htmlembedded', - 'html' => 'htmlmixed', - 'tpl' => 'htmlmixed', - 'js' => 'javascript', - 'json' => 'javascript', - 'less' => 'less', - 'lua' => 'lua', - 'md' => 'markdown', + protected $defaultFileTypes = [ + 'php' => 'php', + 'c' => 'clike', + 'h' => 'clike', + 'cpp' => 'clike', + 'm' => 'clike', + 'mm' => 'clike', + 'ino' => 'clike', + 'cs' => 'text/x-csharp', + 'java' => 'text/x-java', + 'clj' => 'clojure', + 'coffee' => 'coffeescript', + 'css' => 'css', + 'diff' => 'diff', + 'ecl' => 'ecl', + 'el' => 'erlang', + 'go' => 'go', + 'groovy' => 'groovy', + 'hs' => 'haskell', + 'lhs' => 'haskell', + 'jsp' => 'application/x-jsp', + 'asp' => 'htmlembedded', + 'aspx' => 'htmlembedded', + 'html' => 'htmlmixed', + 'tpl' => 'htmlmixed', + 'js' => 'javascript', + 'json' => 'javascript', + 'less' => 'less', + 'lua' => 'lua', + 'md' => 'markdown', 'markdown' => 'markdown', - 'sql' => 'mysql', - 'ml' => 'ocaml', - 'mli' => 'ocaml', - 'pl' => 'perl', - 'pm' => 'perl', - 'pas' => 'pascal', - 'ini' => 'properties', - 'cfg' => 'properties', - 'nt' => 'ntriples', - 'py' => 'python', - 'rb' => 'ruby', - 'rst' => 'rst', - 'r' => 'r', - 'sh' => 'shell', - 'ss' => 'scheme', - 'scala' => 'text/x-scala', - 'scm' => 'scheme', - 'sls' => 'scheme', - 'sps' => 'scheme', - 'rs' => 'rust', - 'st' => 'smalltalk', - 'tex' => 'stex', - 'vbs' => 'vbscript', - 'vb' => 'vbscript', - 'v' => 'verilog', - 'xml' => 'xml', - 'xsd' => 'xml', - 'xsl' => 'xml', - 'xul' => 'xml', - 'xlf' => 'xml', - 'xliff' => 'xml', - 'xaml' => 'xml', - 'wxs' => 'xml', - 'wxl' => 'xml', - 'wxi' => 'xml', - 'wsdl' => 'xml', - 'svg' => 'xml', - 'rss' => 'xml', - 'rdf' => 'xml', - 'plist' => 'xml', - 'mxml' => 'xml', - 'kml' => 'xml', - 'glade' => 'xml', - 'xq' => 'xquery', - 'xqm' => 'xquery', - 'xquery' => 'xquery', - 'xqy' => 'xquery', - 'yml' => 'yaml', - 'yaml' => 'yaml', - 'png' => 'image', - 'jpg' => 'image', - 'gif' => 'image', - 'jpeg' => 'image', - 'bmp' => 'image', - 'csproj' => 'xml', - ); - - protected static $binaryTypes = array( + 'sql' => 'mysql', + 'ml' => 'ocaml', + 'mli' => 'ocaml', + 'pl' => 'perl', + 'pm' => 'perl', + 'pas' => 'pascal', + 'ini' => 'properties', + 'cfg' => 'properties', + 'nt' => 'ntriples', + 'py' => 'python', + 'rb' => 'ruby', + 'rst' => 'rst', + 'r' => 'r', + 'sh' => 'shell', + 'ss' => 'scheme', + 'scala' => 'text/x-scala', + 'scm' => 'scheme', + 'sls' => 'scheme', + 'sps' => 'scheme', + 'rs' => 'rust', + 'st' => 'smalltalk', + 'tex' => 'stex', + 'vbs' => 'vbscript', + 'vb' => 'vbscript', + 'v' => 'verilog', + 'xml' => 'xml', + 'xsd' => 'xml', + 'xsl' => 'xml', + 'xul' => 'xml', + 'xlf' => 'xml', + 'xliff' => 'xml', + 'xaml' => 'xml', + 'wxs' => 'xml', + 'wxl' => 'xml', + 'wxi' => 'xml', + 'wsdl' => 'xml', + 'svg' => 'xml', + 'rss' => 'xml', + 'rdf' => 'xml', + 'plist' => 'xml', + 'mxml' => 'xml', + 'kml' => 'xml', + 'glade' => 'xml', + 'xq' => 'xquery', + 'xqm' => 'xquery', + 'xquery' => 'xquery', + 'xqy' => 'xquery', + 'yml' => 'yaml', + 'yaml' => 'yaml', + 'png' => 'image', + 'jpg' => 'image', + 'gif' => 'image', + 'jpeg' => 'image', + 'bmp' => 'image', + 'csproj' => 'xml', + ]; + + protected static $binaryTypes = [ 'exe', 'com', 'so', 'la', 'o', 'dll', 'pyc', 'jpg', 'jpeg', 'bmp', 'gif', 'png', 'xmp', 'pcx', 'svgz', 'ttf', 'tiff', 'oet', 'gz', 'tar', 'rar', 'zip', '7z', 'jar', 'class', 'odt', 'ods', 'pdf', 'doc', 'docx', 'dot', 'xls', 'xlsx', - ); + ]; public function __construct(Application $app) { @@ -109,12 +109,13 @@ public function __construct(Application $app) } /** - * Returns the file type based on filename by treating the extension + * Returns the file type based on filename by treating the extension. * * The file type is used by CodeMirror, a Javascript-based IDE implemented in * GitList, to properly highlight the blob syntax (if it's a source-code) * * @param string $file File name + * * @return mixed File type */ public function getFileType($file) @@ -143,7 +144,7 @@ public function getFileType($file) * * @param string $file * - * @return boolean + * @return bool */ public function isBinary($file) { @@ -164,35 +165,41 @@ public function isBinary($file) return false; } - public function getReadme($repository, $branch = null, $path = "") + public function getReadme($repository, $branch = null, $path = '') { if ($branch === null) { - $branch = $repository->getHead(); + $branch = $repository->getHead(); } - if ($path != "") $path = "$path/"; + if ($path != '') { + $path = "$path/"; + } - $files = $repository->getTree($path != "" ? "$branch:\"$path\"" : $branch)->output(); + $files = $repository->getTree($path != '' ? "$branch:\"$path\"" : $branch)->output(); foreach ($files as $file) { if (preg_match('/^readme*/i', $file['name'])) { - return array( + return [ 'filename' => $file['name'], - 'content' => $repository->getBlob("$branch:\"$path{$file['name']}\"")->output() - ); + 'content' => $repository->getBlob("$branch:\"$path{$file['name']}\"")->output(), + ]; } } - // No contextual readme, try to catch the main one if we are in deeper context - if ($path != "") return $this->getReadme($repository, $branch, ""); - return array(); + // No contextual readme, try to catch the main one if we are in deeper context + if ($path != '') { + return $this->getReadme($repository, $branch, ''); + } + + return []; } /** - * Returns an Array where the first value is the tree-ish and the second is the path + * Returns an Array where the first value is the tree-ish and the second is the path. * * @param \GitList\Git\Repository $repository * @param string $branch * @param string $tree + * * @return array */ public function extractRef($repository, $branch = '', $tree = '') @@ -202,13 +209,13 @@ public function extractRef($repository, $branch = '', $tree = '') $input = $branch . '/' . $tree; // If the ref appears to be a SHA, just split the string - if (preg_match("/^([[:alnum:]]{40})(.+)/", $input, $matches)) { + if (preg_match('/^([[:alnum:]]{40})(.+)/', $input, $matches)) { $branch = $matches[1]; } else { // Otherwise, attempt to detect the ref using a list of the project's branches and tags $validRefs = array_merge((array) $repository->getBranches(), (array) $repository->getTags()); foreach ($validRefs as $key => $ref) { - if (!preg_match(sprintf("#^%s/#", preg_quote($ref, '#')), $input)) { + if (!preg_match(sprintf('#^%s/#', preg_quote($ref, '#')), $input)) { unset($validRefs[$key]); } } @@ -223,7 +230,6 @@ public function extractRef($repository, $branch = '', $tree = '') } } - return array($branch, $tree); + return [$branch, $tree]; } } - diff --git a/src/Util/Routing.php b/src/Util/Routing.php index 2ab2e319..0f8316f0 100644 --- a/src/Util/Routing.php +++ b/src/Util/Routing.php @@ -2,8 +2,8 @@ namespace GitList\Util; -use Silex\Application; use GitList\Exception\EmptyRepositoryException; +use Silex\Application; class Routing { @@ -84,7 +84,7 @@ public function parseCommitishPathParam($commitishPath, $repo) $path = substr($path, 1); } - return array($commitish, $path); + return [$commitish, $path]; } public function getBranchRegex() @@ -127,6 +127,7 @@ function ($a, $b) { ); $regex = implode('|', $quotedPaths); } + return $regex; } @@ -143,9 +144,10 @@ public function isWindows() } /** - * Strips the base path from a full repository path + * Strips the base path from a full repository path. * * @param string $repoPath Full path to the repository + * * @return string Relative path to the repository from git.repositories */ public function getRelativePath($repoPath) @@ -154,11 +156,9 @@ public function getRelativePath($repoPath) $relativePath = substr($repoPath, strlen($this->app['git.repos'])); return ltrim(strtr($relativePath, '\\', '/'), '/'); - } else { - throw new \InvalidArgumentException( + } + throw new \InvalidArgumentException( sprintf("Path '%s' does not match configured repository directory", $repoPath) ); - } } } - diff --git a/src/Util/View.php b/src/Util/View.php index 612aa04a..236ba72e 100644 --- a/src/Util/View.php +++ b/src/Util/View.php @@ -5,24 +5,25 @@ class View { /** - * Builds a breadcrumb array based on a path spec + * Builds a breadcrumb array based on a path spec. * * @param string $spec Path spec + * * @return array Array with parts of the breadcrumb */ public function getBreadcrumbs($spec) { if (!$spec) { - return array(); + return []; } $paths = explode('/', $spec); foreach ($paths as $i => $path) { - $breadcrumbs[] = array( - 'dir' => $path, + $breadcrumbs[] = [ + 'dir' => $path, 'path' => implode('/', array_slice($paths, 0, $i + 1)), - ); + ]; } return $breadcrumbs; @@ -31,18 +32,18 @@ public function getBreadcrumbs($spec) public function getPager($pageNumber, $totalCommits) { $pageNumber = (empty($pageNumber)) ? 0 : $pageNumber; - $lastPage = intval($totalCommits / 15); + $lastPage = (int) ($totalCommits / 15); // If total commits are integral multiple of 15, the lastPage will be commits/15 - 1. $lastPage = ($lastPage * 15 == $totalCommits) ? $lastPage - 1 : $lastPage; $nextPage = $pageNumber + 1; $previousPage = $pageNumber - 1; - return array('current' => $pageNumber, + return ['current' => $pageNumber, 'next' => $nextPage, 'previous' => $previousPage, 'last' => $lastPage, 'total' => $totalCommits, - ); + ]; } } diff --git a/tests/InterfaceTest.php b/tests/InterfaceTest.php index eff27424..908b9130 100644 --- a/tests/InterfaceTest.php +++ b/tests/InterfaceTest.php @@ -1,8 +1,8 @@ mkdir($cacheDir); @@ -48,7 +49,7 @@ public static function setUpBeforeClass() $repository->setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); $repository->addAll(); - $repository->commit("Initial commit"); + $repository->commit('Initial commit'); $repository->createBranch('issue12'); $repository->createBranch('issue42'); $repository->createBranch('branch/name/wiith/slashes'); @@ -61,14 +62,18 @@ public static function setUpBeforeClass() file_put_contents(self::$tmpdir . 'foobar/.git/description', 'This is a test repo!'); $fs->mkdir(self::$tmpdir . 'foobar/myfolder'); $fs->mkdir(self::$tmpdir . 'foobar/testfolder'); - file_put_contents(self::$tmpdir . 'foobar/myfolder/mytest.php', - "setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); $repository->addAll(); - $repository->commit("First commit"); + $repository->commit('First commit'); // Nested repository fixture $nested_dir = self::$tmpdir . 'nested/'; @@ -80,13 +85,13 @@ public static function setUpBeforeClass() $repository->setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); $repository->addAll(); - $repository->commit("First commit"); - $repository->createBranch("testing"); - $repository->checkout("testing"); + $repository->commit('First commit'); + $repository->createBranch('testing'); + $repository->checkout('testing'); file_put_contents($nested_dir . 'NestedRepo/README.txt', 'NESTED TEST BRANCH README'); $repository->addAll(); - $repository->commit("Changing branch"); - $repository->checkout("master"); + $repository->commit('Changing branch'); + $repository->checkout('master'); // master-less repository fixture $git->createRepository(self::$tmpdir . 'develop'); @@ -95,15 +100,15 @@ public static function setUpBeforeClass() $repository->setConfig('user.email', 'luke@rebel.org'); file_put_contents(self::$tmpdir . 'develop/README.md', "## develop\ndevelop is a *test* repository!"); $repository->addAll(); - $repository->commit("First commit"); - $repository->createBranch("develop"); + $repository->commit('First commit'); + $repository->createBranch('develop'); $repository = $repository->checkout('develop'); file_put_contents(self::$tmpdir . 'develop/test.php', "setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); $repository->addAll(); - $repository->commit("Initial commit"); + $repository->commit('Initial commit'); // Detached HEAD repository fixture $git->createRepository(self::$tmpdir . 'detached-head'); @@ -112,7 +117,7 @@ public static function setUpBeforeClass() $repository->setConfig('user.email', 'luke@rebel.org'); file_put_contents(self::$tmpdir . 'detached-head/README.md', "## detached head\ndetached-head is a *test* repository!"); $repository->addAll(); - $repository->commit("First commit"); + $repository->commit('First commit'); $repository->checkout('HEAD'); // mailmap repository fixture @@ -121,26 +126,33 @@ public static function setUpBeforeClass() $repository->setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); file_put_contents(self::$tmpdir . 'mailmap/README.md', "## mailmap\nmailmap is a *test* repository!"); - file_put_contents(self::$tmpdir . 'mailmap/.mailmap', "Anakin Skywalker Luke Skywalker "); + file_put_contents(self::$tmpdir . 'mailmap/.mailmap', 'Anakin Skywalker Luke Skywalker '); $repository->addAll(); - $repository->commit("First commit"); + $repository->commit('First commit'); + } + + public static function tearDownAfterClass() + { + $fs = new Filesystem(); + $fs->remove(self::$tmpdir); } public function createApplication() { - $config = new GitList\Config; + $config = new GitList\Config(); $config->set('app', 'debug', true); $config->set('app', 'debug', false); $config->set('git', 'client', self::$gitPath); $config->set('git', 'default_branch', 'master'); - $config->set('git', 'repositories', array(self::$tmpdir)); + $config->set('git', 'repositories', [self::$tmpdir]); $app = require 'boot.php'; + return $app; } /** - * @covers GitList\Controller\MainController::connect + * @covers \GitList\Controller\MainController::connect */ public function testInitialPage() { @@ -178,7 +190,7 @@ public function testInitialPage() } /** - * @covers GitList\Controller\TreeController::connect + * @covers \GitList\Controller\TreeController::connect */ public function testRepositoryPage() { @@ -211,7 +223,7 @@ public function testRepositoryPage() } /** - * @covers GitList\Controller\BlobController::connect + * @covers \GitList\Controller\BlobController::connect */ public function testBlobPage() { @@ -221,18 +233,26 @@ public function testBlobPage() $this->assertTrue($client->getResponse()->isOk()); $this->assertCount(1, $crawler->filter('.breadcrumb .active:contains("test.php")')); - $this->assertEquals('/GitTest/raw/master/test.php', - $crawler->filter('.source-header .btn-group a')->eq(0)->attr('href')); - $this->assertEquals('/GitTest/blame/master/test.php', - $crawler->filter('.source-header .btn-group a')->eq(1)->attr('href')); - $this->assertEquals('/GitTest/logpatch/master/test.php', - $crawler->filter('.source-header .btn-group a')->eq(2)->attr('href')); - $this->assertEquals('/GitTest/commits/master/test.php', - $crawler->filter('.source-header .btn-group a')->eq(3)->attr('href')); + $this->assertEquals( + '/GitTest/raw/master/test.php', + $crawler->filter('.source-header .btn-group a')->eq(0)->attr('href') + ); + $this->assertEquals( + '/GitTest/blame/master/test.php', + $crawler->filter('.source-header .btn-group a')->eq(1)->attr('href') + ); + $this->assertEquals( + '/GitTest/logpatch/master/test.php', + $crawler->filter('.source-header .btn-group a')->eq(2)->attr('href') + ); + $this->assertEquals( + '/GitTest/commits/master/test.php', + $crawler->filter('.source-header .btn-group a')->eq(3)->attr('href') + ); } /** - * @covers GitList\Controller\BlobController::connect + * @covers \GitList\Controller\BlobController::connect */ public function testRawPage() { @@ -244,7 +264,7 @@ public function testRawPage() } /** - * @covers GitList\Controller\CommitController::connect + * @covers \GitList\Controller\CommitController::connect */ public function testBlamePage() { @@ -253,18 +273,22 @@ public function testBlamePage() $crawler = $client->request('GET', '/GitTest/blame/master/test.php'); $this->assertTrue($client->getResponse()->isOk()); $this->assertCount(1, $crawler->filter('.source-header .meta:contains("test.php")')); - $this->assertRegexp('/\/GitTest\/commit\/[a-zA-Z0-9%]+/', - $crawler->filter('.blame-view .commit')->eq(0)->filter('a')->attr('href')); + $this->assertRegexp( + '/\/GitTest\/commit\/[a-zA-Z0-9%]+/', + $crawler->filter('.blame-view .commit')->eq(0)->filter('a')->attr('href') + ); $crawler = $client->request('GET', '/foobar/blame/master/bar.json'); $this->assertTrue($client->getResponse()->isOk()); $this->assertCount(1, $crawler->filter('.source-header .meta:contains("bar.json")')); - $this->assertRegexp('/\/foobar\/commit\/[a-zA-Z0-9%]+/', - $crawler->filter('.blame-view .commit')->eq(0)->filter('a')->attr('href')); + $this->assertRegexp( + '/\/foobar\/commit\/[a-zA-Z0-9%]+/', + $crawler->filter('.blame-view .commit')->eq(0)->filter('a')->attr('href') + ); } /** - * @covers GitList\Controller\CommitController::connect + * @covers \GitList\Controller\CommitController::connect */ public function testHistoryPage() { @@ -289,7 +313,7 @@ public function testHistoryPage() } /** - * @covers GitList\Controller\CommitController::connect + * @covers \GitList\Controller\CommitController::connect */ public function testCommitsPage() { @@ -309,7 +333,6 @@ public function testCommitsPage() $this->assertEquals('mailto:darth@empire.com', $crawler->filter('.table tbody tr td span a')->eq(1)->attr('href')); } - public function testPatchLogPage() { $client = $this->createClient(); @@ -327,9 +350,8 @@ public function testPatchLogPage() $this->assertEquals('First commit', $crawler->filter('.commit-header h4')->eq(0)->text()); } - /** - * @covers GitList\Controller\MainController::connect + * @covers \GitList\Controller\MainController::connect */ public function testStatsPage() { @@ -348,7 +370,7 @@ public function testStatsPage() } /** - * @covers GitList\Controller\MainController::connect + * @covers \GitList\Controller\MainController::connect */ public function testRssPage() { @@ -363,7 +385,7 @@ public function testRssPage() } /** - * @covers GitList\Controller\TreeController::connect + * @covers \GitList\Controller\TreeController::connect */ public function testNestedRepoPage() { @@ -377,7 +399,7 @@ public function testNestedRepoPage() } /** - * @covers GitList\Controller\TreeController::connect + * @covers \GitList\Controller\TreeController::connect */ public function testDevelopRepo() { @@ -388,7 +410,7 @@ public function testDevelopRepo() } /** - * @covers GitList\Controller\TreeController::connect + * @covers \GitList\Controller\TreeController::connect */ public function testNestedRepoBranch() { @@ -398,11 +420,4 @@ public function testNestedRepoBranch() $this->assertTrue($client->getResponse()->isOk()); $this->assertRegexp('/NESTED TEST BRANCH README/', $client->getResponse()->getContent()); } - - public static function tearDownAfterClass() - { - $fs = new Filesystem(); - $fs->remove(self::$tmpdir); - } } - diff --git a/themes/bootstrap3/twig/layout.twig b/themes/bootstrap3/twig/layout.twig index 85cf9c2b..895d194b 100644 --- a/themes/bootstrap3/twig/layout.twig +++ b/themes/bootstrap3/twig/layout.twig @@ -4,28 +4,28 @@ {% block title %}Welcome!{% endblock %} - - - - + + + + {% block body %}{% endblock %} {% block javascripts %} - - - - - - - - - - + + + + + + + + + + {% endblock %} diff --git a/themes/bootstrap3/twig/layout_page.twig b/themes/bootstrap3/twig/layout_page.twig index 5da4e258..2873656b 100644 --- a/themes/bootstrap3/twig/layout_page.twig +++ b/themes/bootstrap3/twig/layout_page.twig @@ -8,19 +8,19 @@
diff --git a/themes/bootstrap3/twig/navigation.twig b/themes/bootstrap3/twig/navigation.twig index 12af3dfa..bc332567 100644 --- a/themes/bootstrap3/twig/navigation.twig +++ b/themes/bootstrap3/twig/navigation.twig @@ -7,7 +7,7 @@ - {{ app.title }} + {{ title }}