diff --git a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/RpmPackageRuleTest.java b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/RpmPackageRuleTest.java
index 46006b7..fc669f8 100644
--- a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/RpmPackageRuleTest.java
+++ b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/RpmPackageRuleTest.java
@@ -50,7 +50,7 @@ public class RpmPackageRuleTest extends RpmBaseObjectTest {
rpmPackage.setMojo(mojo);
rpmFileRule = new RpmPackageRule();
rpmFileRule.setPackage(rpmPackage);
- rpmFileRule.setBase("build");
+ rpmFileRule.setBase("files");
}
@Override
@@ -115,7 +115,7 @@ public class RpmPackageRuleTest extends RpmBaseObjectTest {
@Test
public void scanPathAccessor() throws InvalidPathException {
- String scanPath = String.format("%s%sbuild", new File(testOutputPath).getAbsolutePath(), File.separator);
+ String scanPath = String.format("%s%sfiles", new File(testOutputPath).getAbsolutePath(), File.separator);
assertEquals(scanPath, rpmFileRule.getScanPath());
}
diff --git a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/RpmPackageTest.java b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/RpmPackageTest.java
index d008e97..e92efdf 100644
--- a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/RpmPackageTest.java
+++ b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/RpmPackageTest.java
@@ -47,7 +47,7 @@ public class RpmPackageTest {
project.setBuild(projectBuild);
PackageRpmMojo mojo = new PackageRpmMojo();
mojo.setProject(project);
- mojo.setBuildPath(String.format("%s%sbuild", testOutputPath, File.separator));
+ mojo.setBuildPath(String.format("%s%sfiles", testOutputPath, File.separator));
rpmPackage.setMojo(mojo);
}
diff --git a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/AbstractRpmMojoTest.java b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/AbstractRpmMojoTest.java
index 4332a81..e19a75a 100644
--- a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/AbstractRpmMojoTest.java
+++ b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/AbstractRpmMojoTest.java
@@ -164,7 +164,7 @@ public class AbstractRpmMojoTest {
@Test
public void scanMasterFiles() {
- mojo.setBuildPath(String.format("%s%sbuild", testOutputPath, File.separator));
+ mojo.setBuildPath(String.format("%s%sfiles", testOutputPath, File.separator));
mojo.scanMasterFiles();
Set masterFiles = mojo.getMasterFiles();
assertEquals(65, masterFiles.size());
diff --git a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/ListFilesRpmMojoTest.java b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/ListFilesRpmMojoTest.java
index bfb0689..cf9b250 100644
--- a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/ListFilesRpmMojoTest.java
+++ b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/ListFilesRpmMojoTest.java
@@ -43,7 +43,7 @@ public class ListFilesRpmMojoTest {
List packages = new ArrayList<>();
packages.add(rpmPackage);
this.mojo.setPackages(packages);
- this.mojo.setBuildPath(String.format("%s%sbuild", this.testOutputPath, File.separator));
+ this.mojo.setBuildPath(String.format("%s%sfiles", this.testOutputPath, File.separator));
}
@Test
diff --git a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/PackageRpmMojoTest.java b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/PackageRpmMojoTest.java
index 296a85b..96571fc 100644
--- a/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/PackageRpmMojoTest.java
+++ b/maven-plugin-rpm/src/test/java/org/xbib/maven/plugin/rpm/mojo/PackageRpmMojoTest.java
@@ -33,7 +33,7 @@ public class PackageRpmMojoTest {
Build projectBuild = new Build();
projectBuild.setDirectory(testOutputPath);
project = new MavenProject();
- project.setGroupId("uk.co.codezen");
+ project.setGroupId("org.xbib");
project.setArtifactId("packagerpmmojo-artifact");
project.setName("test");
project.setUrl("http://www.example.com");
@@ -49,7 +49,7 @@ public class PackageRpmMojoTest {
List packages = new ArrayList<>();
packages.add(rpmPackage);
mojo.setPackages(packages);
- mojo.setBuildPath(String.format("%s%sbuild", testOutputPath, File.separator));
+ mojo.setBuildPath(String.format("%s%sfiles", testOutputPath, File.separator));
}
@Test
diff --git a/maven-plugin-rpm/src/test/resources/files/.gitignore b/maven-plugin-rpm/src/test/resources/files/.gitignore
new file mode 100644
index 0000000..fa563fa
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/.gitignore
@@ -0,0 +1,11 @@
+/web/bundles/
+/app/bootstrap.php.cache
+/app/cache/*
+/app/config/parameters.yml
+/app/logs/*
+!app/cache/.gitkeep
+!app/logs/.gitkeep
+/build/
+/vendor/
+/bin/
+/composer.phar
diff --git a/maven-plugin-rpm/src/test/resources/files/README.md b/maven-plugin-rpm/src/test/resources/files/README.md
new file mode 100644
index 0000000..0b8211b
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/README.md
@@ -0,0 +1,170 @@
+Symfony Standard Edition
+========================
+
+Welcome to the Symfony Standard Edition - a fully-functional Symfony2
+application that you can use as the skeleton for your new applications.
+
+This document contains information on how to download, install, and start
+using Symfony. For a more detailed explanation, see the [Installation][1]
+chapter of the Symfony Documentation.
+
+1) Installing the Standard Edition
+----------------------------------
+
+When it comes to installing the Symfony Standard Edition, you have the
+following options.
+
+### Use Composer (*recommended*)
+
+As Symfony uses [Composer][2] to manage its dependencies, the recommended way
+to create a new project is to use it.
+
+If you don't have Composer yet, download it following the instructions on
+http://getcomposer.org/ or just run the following command:
+
+ curl -s http://getcomposer.org/installer | php
+
+Then, use the `create-project` command to generate a new Symfony application:
+
+ php composer.phar create-project symfony/framework-standard-edition path/to/install
+
+Composer will install Symfony and all its dependencies under the
+`path/to/install` directory.
+
+### Download an Archive File
+
+To quickly test Symfony, you can also download an [archive][3] of the Standard
+Edition and unpack it somewhere under your web server root directory.
+
+If you downloaded an archive "without vendors", you also need to install all
+the necessary dependencies. Download composer (see above) and run the
+following command:
+
+ php composer.phar install
+
+2) Checking your System Configuration
+-------------------------------------
+
+Before starting coding, make sure that your local system is properly
+configured for Symfony.
+
+Execute the `check.php` script from the command line:
+
+ php app/check.php
+
+The script returns a status code of `0` if all mandatory requirements are met,
+`1` otherwise.
+
+Access the `config.php` script from a browser:
+
+ http://localhost/path-to-project/web/config.php
+
+If you get any warnings or recommendations, fix them before moving on.
+
+3) Browsing the Demo Application
+--------------------------------
+
+Congratulations! You're now ready to use Symfony.
+
+From the `config.php` page, click the "Bypass configuration and go to the
+Welcome page" link to load up your first Symfony page.
+
+You can also use a web-based configurator by clicking on the "Configure your
+Symfony Application online" link of the `config.php` page.
+
+To see a real-live Symfony page in action, access the following page:
+
+ web/app_dev.php/demo/hello/Fabien
+
+4) Getting started with Symfony
+-------------------------------
+
+This distribution is meant to be the starting point for your Symfony
+applications, but it also contains some sample code that you can learn from
+and play with.
+
+A great way to start learning Symfony is via the [Quick Tour][4], which will
+take you through all the basic features of Symfony2.
+
+Once you're feeling good, you can move onto reading the official
+[Symfony2 book][5].
+
+A default bundle, `AcmeDemoBundle`, shows you Symfony2 in action. After
+playing with it, you can remove it by following these steps:
+
+ * delete the `src/Acme` directory;
+
+ * remove the routing entry referencing AcmeDemoBundle in `app/config/routing_dev.yml`;
+
+ * remove the AcmeDemoBundle from the registered bundles in `app/AppKernel.php`;
+
+ * remove the `web/bundles/acmedemo` directory;
+
+ * empty the `security.yml` file or tweak the security configuration to fit
+ your needs.
+
+What's inside?
+---------------
+
+The Symfony Standard Edition is configured with the following defaults:
+
+ * Twig is the only configured template engine;
+
+ * Doctrine ORM/DBAL is configured;
+
+ * Swiftmailer is configured;
+
+ * Annotations for everything are enabled.
+
+It comes pre-configured with the following bundles:
+
+ * **FrameworkBundle** - The core Symfony framework bundle
+
+ * [**SensioFrameworkExtraBundle**][6] - Adds several enhancements, including
+ template and routing annotation capability
+
+ * [**DoctrineBundle**][7] - Adds support for the Doctrine ORM
+
+ * [**TwigBundle**][8] - Adds support for the Twig templating engine
+
+ * [**SecurityBundle**][9] - Adds security by integrating Symfony's security
+ component
+
+ * [**SwiftmailerBundle**][10] - Adds support for Swiftmailer, a library for
+ sending emails
+
+ * [**MonologBundle**][11] - Adds support for Monolog, a logging library
+
+ * [**AsseticBundle**][12] - Adds support for Assetic, an asset processing
+ library
+
+ * **WebProfilerBundle** (in dev/test env) - Adds profiling functionality and
+ the web debug toolbar
+
+ * **SensioDistributionBundle** (in dev/test env) - Adds functionality for
+ configuring and working with Symfony distributions
+
+ * [**SensioGeneratorBundle**][13] (in dev/test env) - Adds code generation
+ capabilities
+
+ * **AcmeDemoBundle** (in dev/test env) - A demo bundle with some example
+ code
+
+All libraries and bundles included in the Symfony Standard Edition are
+released under the MIT or BSD license.
+
+Enjoy!
+
+[1]: http://symfony.com/doc/2.5/book/installation.html
+[2]: http://getcomposer.org/
+[3]: http://symfony.com/download
+[4]: http://symfony.com/doc/2.5/quick_tour/the_big_picture.html
+[5]: http://symfony.com/doc/2.5/index.html
+[6]: http://symfony.com/doc/2.5/bundles/SensioFrameworkExtraBundle/index.html
+[7]: http://symfony.com/doc/2.5/book/doctrine.html
+[8]: http://symfony.com/doc/2.5/book/templating.html
+[9]: http://symfony.com/doc/2.5/book/security.html
+[10]: http://symfony.com/doc/2.5/cookbook/email.html
+[11]: http://symfony.com/doc/2.5/cookbook/logging/monolog.html
+[12]: http://symfony.com/doc/2.5/cookbook/assetic/asset_management.html
+[13]: http://symfony.com/doc/2.5/bundles/SensioGeneratorBundle/index.html
diff --git a/maven-plugin-rpm/src/test/resources/files/UPGRADE-2.2.md b/maven-plugin-rpm/src/test/resources/files/UPGRADE-2.2.md
new file mode 100644
index 0000000..cad9eeb
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/UPGRADE-2.2.md
@@ -0,0 +1,30 @@
+UPGRADE FROM 2.1 to 2.2
+=======================
+
+ * The [`web/.htaccess`](https://github.com/symfony/symfony-standard/blob/2.2/web/.htaccess)
+ file has been enhanced substantially to prevent duplicate content with and
+ without `/app.php` in the URI. It also improves functionality when using
+ Apache aliases or when mod_rewrite is not available. So you might want to
+ update your `.htaccess` file as well.
+
+ * The ``_internal`` route is not used any more. It should then be removed
+ from both your routing and security configurations. A ``fragments`` key has
+ been added to the framework configuration and must be specified when ESI or
+ Hinclude are in use. No security configuration is required for this path as
+ by default ESI access is only permitted for trusted hosts and Hinclude
+ access uses an URL signing mechanism.
+
+ ```
+ framework:
+ # ...
+ fragments: { path: /_proxy }
+ ```
+
+Functional Tests
+----------------
+
+ * The profiler has been disabled by default in the test environment. You can
+ enable it again by modifying the ``config_test.yml`` configuration file or
+ even better, you can just enable it for the very next request by calling
+ ``$client->enableProfiler()`` when you need the profiler in a test (that
+ speeds up functional tests quite a bit).
diff --git a/maven-plugin-rpm/src/test/resources/files/UPGRADE-2.3.md b/maven-plugin-rpm/src/test/resources/files/UPGRADE-2.3.md
new file mode 100644
index 0000000..eb4b3ec
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/UPGRADE-2.3.md
@@ -0,0 +1,52 @@
+UPGRADE FROM 2.2 to 2.3
+=======================
+
+When upgrading Symfony from 2.2 to 2.3, you need to do the following changes
+to the code that came from the Standard Edition:
+
+ * The debugging tools are not enabled by default anymore and should be added
+ to the
+ [`web/app_dev.php`](https://github.com/symfony/symfony-standard/blob/2.3/web/app_dev.php)
+ front controller manually, just after including the bootstrap cache:
+
+ use Symfony\Component\Debug\Debug;
+
+ Debug::enable();
+
+ You also need to enable debugging in the
+ [`app/console`](https://github.com/symfony/symfony-standard/blob/2.3/app/console)
+ script, after the `$debug` variable is defined:
+
+ use Symfony\Component\Debug\Debug;
+
+ if ($debug) {
+ Debug::enable();
+ }
+
+ * The `parameters.yml` file can now be managed by the
+ `incenteev/composer-parameter-handler` bundle that comes with the 2.3
+ Standard Edition:
+
+ * add `"incenteev/composer-parameter-handler": "~2.0"` to your
+ `composer.json` file;
+
+ * add `/app/config/parameters.yml` to your `.gitignore` file;
+
+ * create a
+ [`app/config/parameters.yml.dist`](https://github.com/symfony/symfony-standard/blob/2.3/app/config/parameters.yml.dist)
+ file with sensible values for all your parameters.
+
+ * It is highly recommended that you switch the minimum stability to `stable`
+ in your `composer.json` file.
+
+ * If you are using Apache, have a look at the new
+ [`.htaccess`](https://github.com/symfony/symfony-standard/blob/2.3/web/.htaccess)
+ configuration and change yours accordingly.
+
+ * In the
+ [`app/autoload.php`](https://github.com/symfony/symfony-standard/blob/2.3/app/autoload.php)
+ file, the section about `intl` should be removed as it is not needed anymore.
+
+You can also have a look at the
+[diff](https://github.com/symfony/symfony-standard/compare/v2.2.0%E2%80%A62.3)
+between the 2.2 version of the Standard Edition and the 2.3 version.
diff --git a/maven-plugin-rpm/src/test/resources/files/UPGRADE-2.4.md b/maven-plugin-rpm/src/test/resources/files/UPGRADE-2.4.md
new file mode 100644
index 0000000..a3e3395
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/UPGRADE-2.4.md
@@ -0,0 +1,9 @@
+UPGRADE FROM 2.3 to 2.4
+=======================
+
+When upgrading Symfony from 2.3 to 2.4, you need to do the following changes
+to the code that came from the Standard Edition:
+
+ * We recommend to comment or remove the `firephp` and `chromephp` Monolog
+ handlers as they might cause issues with some configuration (`chromephp`
+ with Nginx for instance).
diff --git a/maven-plugin-rpm/src/test/resources/files/UPGRADE.md b/maven-plugin-rpm/src/test/resources/files/UPGRADE.md
new file mode 100644
index 0000000..a206d37
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/UPGRADE.md
@@ -0,0 +1,268 @@
+Symfony Standard Edition Upgrade
+================================
+
+From Symfony 2.0 to Symfony 2.1
+-------------------------------
+
+### Project Dependencies
+
+As of Symfony 2.1, project dependencies are managed by
+[Composer](http://getcomposer.org/):
+
+* The `bin/vendors` script can be removed as `composer.phar` does all the work
+ now (it is recommended to install it globally on your machine).
+
+* The `deps` file need to be replaced with the `composer.json` one.
+
+* The `composer.lock` is the equivalent of the generated `deps.lock` file and
+ it is automatically generated by Composer.
+
+Download the default
+[`composer.json`](https://raw.github.com/symfony/symfony-standard/2.1/composer.json)
+and
+[`composer.lock`](https://raw.github.com/symfony/symfony-standard/2.1/composer.lock)
+files for Symfony 2.1 and put them into the main directory of your project. If
+you have customized your `deps` file, move the added dependencies to the
+`composer.json` file (many bundles and PHP libraries are already available as
+Composer packages -- search for them on [Packagist](http://packagist.org/)).
+
+Remove your current `vendor` directory.
+
+Finally, run Composer:
+
+ $ composer.phar install
+
+Note: You must complete the upgrade steps below so composer can successfully generate the autoload files.
+
+### `app/autoload.php`
+
+The default `autoload.php` reads as follows (it has been simplified a lot as
+autoloading for libraries and bundles declared in your `composer.json` file is
+automatically managed by the Composer autoloader):
+
+ add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs');
+ }
+
+ AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
+
+ return $loader;
+
+### `app/config/config.yml`
+
+The `framework.charset` setting must be removed. If you are not using `UTF-8`
+for your application, override the `getCharset()` method in your `AppKernel`
+class instead:
+
+ class AppKernel extends Kernel
+ {
+ public function getCharset()
+ {
+ return 'ISO-8859-1';
+ }
+
+ // ...
+ }
+
+You might want to add the new `strict_requirements` parameter to
+`framework.router` (it avoids fatal errors in the production environment when
+a link cannot be generated):
+
+ framework:
+ router:
+ strict_requirements: "%kernel.debug%"
+
+You can even disable the requirements check on production with `null` as you should
+know that the parameters for URL generation always pass the requirements, e.g. by
+validating them beforehand. This additionally enhances performance. See
+[config_prod.yml](https://github.com/symfony/symfony-standard/blob/master/app/config/config_prod.yml).
+
+The `default_locale` parameter is now a setting of the main `framework`
+configuration (it was under the `framework.session` in 2.0):
+
+ framework:
+ default_locale: "%locale%"
+
+The `auto_start` setting under `framework.session` must be removed as it is
+not used anymore (the session is now always started on-demand). If
+`auto_start` was the only setting under the `framework.session` entry, don't
+remove it entirely, but set its value to `~` (`~` means `null` in YAML)
+instead:
+
+ framework:
+ session: ~
+
+The `trust_proxy_headers` setting was added in the default configuration file
+(as it should be set to `true` when you install your application behind a
+reverse proxy):
+
+ framework:
+ trust_proxy_headers: false
+
+An empty `bundles` entry was added to the `assetic` configuration:
+
+ assetic:
+ bundles: []
+
+The default `swiftmailer` configuration now has the `spool` setting configured
+to the `memory` type to defer email sending after the response is sent to the
+user (recommended for better end-user performance):
+
+ swiftmailer:
+ spool: { type: memory }
+
+The `jms_security_extra` configuration was moved to the `security.yml`
+configuration file.
+
+### `app/config/config_dev.yml`
+
+An example of how to send all emails to a unique address was added:
+
+ #swiftmailer:
+ # delivery_address: me@example.com
+
+### `app/config/config_test.yml`
+
+The `storage_id` setting must be changed to `session.storage.mock_file`:
+
+ framework:
+ session:
+ storage_id: session.storage.mock_file
+
+### `app/config/parameters.ini`
+
+The file has been converted to a YAML file which reads as follows:
+
+ parameters:
+ database_driver: pdo_mysql
+ database_host: localhost
+ database_port: ~
+ database_name: symfony
+ database_user: root
+ database_password: ~
+
+ mailer_transport: smtp
+ mailer_host: localhost
+ mailer_user: ~
+ mailer_password: ~
+
+ locale: en
+ secret: ThisTokenIsNotSoSecretChangeIt
+
+Note that if you convert your parameters file to YAML, you must also change
+its reference in `app/config/config.yml`.
+
+### `app/config/routing_dev.yml`
+
+The `_assetic` entry was removed:
+
+ #_assetic:
+ # resource: .
+ # type: assetic
+
+### `app/config/security.yml`
+
+Under `security.access_control`, the default rule for internal routes was changed:
+
+ security:
+ access_control:
+ #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
+
+Under `security.providers`, the `in_memory` example was updated to the following:
+
+ security:
+ providers:
+ in_memory:
+ memory:
+ users:
+ user: { password: userpass, roles: [ 'ROLE_USER' ] }
+ admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
+
+### `app/AppKernel.php`
+
+The following bundles have been added to the list of default registered bundles:
+
+ new JMS\AopBundle\JMSAopBundle(),
+ new JMS\DiExtraBundle\JMSDiExtraBundle($this),
+
+You must also rename the DoctrineBundle from:
+
+ new Symfony\Bundle\DoctrineBundle\DoctrineBundle(),
+
+to:
+
+ new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
+
+### `web/app.php`
+
+The default `web/app.php` file now reads as follows:
+
+ register(true);
+ */
+
+ require_once __DIR__.'/../app/AppKernel.php';
+ //require_once __DIR__.'/../app/AppCache.php';
+
+ $kernel = new AppKernel('prod', false);
+ $kernel->loadClassCache();
+ //$kernel = new AppCache($kernel);
+ $request = Request::createFromGlobals();
+ $response = $kernel->handle($request);
+ $response->send();
+ $kernel->terminate($request, $response);
+
+### `web/app_dev.php`
+
+The default `web/app_dev.php` file now reads as follows:
+
+ loadClassCache();
+ $request = Request::createFromGlobals();
+ $response = $kernel->handle($request);
+ $response->send();
+ $kernel->terminate($request, $response);
diff --git a/maven-plugin-rpm/src/test/resources/files/app/.htaccess b/maven-plugin-rpm/src/test/resources/files/app/.htaccess
new file mode 100644
index 0000000..fb1de45
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/.htaccess
@@ -0,0 +1,7 @@
+
+ Require all denied
+
+
+ Order deny,allow
+ Deny from all
+
diff --git a/maven-plugin-rpm/src/test/resources/files/app/AppCache.php b/maven-plugin-rpm/src/test/resources/files/app/AppCache.php
new file mode 100644
index 0000000..ddb51db
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/AppCache.php
@@ -0,0 +1,9 @@
+getEnvironment(), array('dev', 'test'))) {
+ $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
+ $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
+ $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
+ $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
+ }
+
+ return $bundles;
+ }
+
+ public function registerContainerConfiguration(LoaderInterface $loader)
+ {
+ $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/app/Resources/views/base.html.twig b/maven-plugin-rpm/src/test/resources/files/app/Resources/views/base.html.twig
new file mode 100644
index 0000000..bafd28d
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/Resources/views/base.html.twig
@@ -0,0 +1,13 @@
+
+
+
+
+ {% block title %}Welcome!{% endblock %}
+ {% block stylesheets %}{% endblock %}
+
+
+
+ {% block body %}{% endblock %}
+ {% block javascripts %}{% endblock %}
+
+
diff --git a/maven-plugin-rpm/src/test/resources/files/app/SymfonyRequirements.php b/maven-plugin-rpm/src/test/resources/files/app/SymfonyRequirements.php
new file mode 100644
index 0000000..56bd35d
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/SymfonyRequirements.php
@@ -0,0 +1,707 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Users of PHP 5.2 should be able to run the requirements checks.
+ * This is why the file and all classes must be compatible with PHP 5.2+
+ * (e.g. not using namespaces and closures).
+ *
+ * ************** CAUTION **************
+ *
+ * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of
+ * the installation/update process. The original file resides in the
+ * SensioDistributionBundle.
+ *
+ * ************** CAUTION **************
+ */
+
+/**
+ * Represents a single PHP requirement, e.g. an installed extension.
+ * It can be a mandatory requirement or an optional recommendation.
+ * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration.
+ *
+ * @author Tobias Schultze
+ */
+class Requirement
+{
+ private $fulfilled;
+ private $testMessage;
+ private $helpText;
+ private $helpHtml;
+ private $optional;
+
+ /**
+ * Constructor that initializes the requirement.
+ *
+ * @param bool $fulfilled Whether the requirement is fulfilled
+ * @param string $testMessage The message for testing the requirement
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
+ */
+ public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false)
+ {
+ $this->fulfilled = (bool) $fulfilled;
+ $this->testMessage = (string) $testMessage;
+ $this->helpHtml = (string) $helpHtml;
+ $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText;
+ $this->optional = (bool) $optional;
+ }
+
+ /**
+ * Returns whether the requirement is fulfilled.
+ *
+ * @return bool true if fulfilled, otherwise false
+ */
+ public function isFulfilled()
+ {
+ return $this->fulfilled;
+ }
+
+ /**
+ * Returns the message for testing the requirement.
+ *
+ * @return string The test message
+ */
+ public function getTestMessage()
+ {
+ return $this->testMessage;
+ }
+
+ /**
+ * Returns the help text for resolving the problem
+ *
+ * @return string The help text
+ */
+ public function getHelpText()
+ {
+ return $this->helpText;
+ }
+
+ /**
+ * Returns the help text formatted in HTML.
+ *
+ * @return string The HTML help
+ */
+ public function getHelpHtml()
+ {
+ return $this->helpHtml;
+ }
+
+ /**
+ * Returns whether this is only an optional recommendation and not a mandatory requirement.
+ *
+ * @return bool true if optional, false if mandatory
+ */
+ public function isOptional()
+ {
+ return $this->optional;
+ }
+}
+
+/**
+ * Represents a PHP requirement in form of a php.ini configuration.
+ *
+ * @author Tobias Schultze
+ */
+class PhpIniRequirement extends Requirement
+{
+ /**
+ * Constructor that initializes the requirement.
+ *
+ * @param string $cfgName The configuration name used for ini_get()
+ * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
+ or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
+ * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
+ This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
+ Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
+ * @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
+ * @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
+ */
+ public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)
+ {
+ $cfgValue = ini_get($cfgName);
+
+ if (is_callable($evaluation)) {
+ if (null === $testMessage || null === $helpHtml) {
+ throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');
+ }
+
+ $fulfilled = call_user_func($evaluation, $cfgValue);
+ } else {
+ if (null === $testMessage) {
+ $testMessage = sprintf('%s %s be %s in php.ini',
+ $cfgName,
+ $optional ? 'should' : 'must',
+ $evaluation ? 'enabled' : 'disabled'
+ );
+ }
+
+ if (null === $helpHtml) {
+ $helpHtml = sprintf('Set %s to %s in php.ini* .',
+ $cfgName,
+ $evaluation ? 'on' : 'off'
+ );
+ }
+
+ $fulfilled = $evaluation == $cfgValue;
+ }
+
+ parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);
+ }
+}
+
+/**
+ * A RequirementCollection represents a set of Requirement instances.
+ *
+ * @author Tobias Schultze
+ */
+class RequirementCollection implements IteratorAggregate
+{
+ private $requirements = array();
+
+ /**
+ * Gets the current RequirementCollection as an Iterator.
+ *
+ * @return Traversable A Traversable interface
+ */
+ public function getIterator()
+ {
+ return new ArrayIterator($this->requirements);
+ }
+
+ /**
+ * Adds a Requirement.
+ *
+ * @param Requirement $requirement A Requirement instance
+ */
+ public function add(Requirement $requirement)
+ {
+ $this->requirements[] = $requirement;
+ }
+
+ /**
+ * Adds a mandatory requirement.
+ *
+ * @param bool $fulfilled Whether the requirement is fulfilled
+ * @param string $testMessage The message for testing the requirement
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ */
+ public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null)
+ {
+ $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false));
+ }
+
+ /**
+ * Adds an optional recommendation.
+ *
+ * @param bool $fulfilled Whether the recommendation is fulfilled
+ * @param string $testMessage The message for testing the recommendation
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ */
+ public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null)
+ {
+ $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true));
+ }
+
+ /**
+ * Adds a mandatory requirement in form of a php.ini configuration.
+ *
+ * @param string $cfgName The configuration name used for ini_get()
+ * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
+ or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
+ * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
+ This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
+ Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
+ * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ */
+ public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
+ {
+ $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false));
+ }
+
+ /**
+ * Adds an optional recommendation in form of a php.ini configuration.
+ *
+ * @param string $cfgName The configuration name used for ini_get()
+ * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
+ or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
+ * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
+ This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
+ Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
+ * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ */
+ public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
+ {
+ $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true));
+ }
+
+ /**
+ * Adds a requirement collection to the current set of requirements.
+ *
+ * @param RequirementCollection $collection A RequirementCollection instance
+ */
+ public function addCollection(RequirementCollection $collection)
+ {
+ $this->requirements = array_merge($this->requirements, $collection->all());
+ }
+
+ /**
+ * Returns both requirements and recommendations.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function all()
+ {
+ return $this->requirements;
+ }
+
+ /**
+ * Returns all mandatory requirements.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function getRequirements()
+ {
+ $array = array();
+ foreach ($this->requirements as $req) {
+ if (!$req->isOptional()) {
+ $array[] = $req;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Returns the mandatory requirements that were not met.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function getFailedRequirements()
+ {
+ $array = array();
+ foreach ($this->requirements as $req) {
+ if (!$req->isFulfilled() && !$req->isOptional()) {
+ $array[] = $req;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Returns all optional recommendations.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function getRecommendations()
+ {
+ $array = array();
+ foreach ($this->requirements as $req) {
+ if ($req->isOptional()) {
+ $array[] = $req;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Returns the recommendations that were not met.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function getFailedRecommendations()
+ {
+ $array = array();
+ foreach ($this->requirements as $req) {
+ if (!$req->isFulfilled() && $req->isOptional()) {
+ $array[] = $req;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Returns whether a php.ini configuration is not correct.
+ *
+ * @return bool php.ini configuration problem?
+ */
+ public function hasPhpIniConfigIssue()
+ {
+ foreach ($this->requirements as $req) {
+ if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns the PHP configuration file (php.ini) path.
+ *
+ * @return string|false php.ini file path
+ */
+ public function getPhpIniConfigPath()
+ {
+ return get_cfg_var('cfg_file_path');
+ }
+}
+
+/**
+ * This class specifies all requirements and optional recommendations that
+ * are necessary to run the Symfony Standard Edition.
+ *
+ * @author Tobias Schultze
+ * @author Fabien Potencier
+ */
+class SymfonyRequirements extends RequirementCollection
+{
+ const REQUIRED_PHP_VERSION = '5.3.3';
+
+ /**
+ * Constructor that initializes the requirements.
+ */
+ public function __construct()
+ {
+ /* mandatory requirements follow */
+
+ $installedPhpVersion = phpversion();
+
+ $this->addRequirement(
+ version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='),
+ sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion),
+ sprintf('You are running PHP version "%s ", but Symfony needs at least PHP "%s " to run.
+ Before using Symfony, upgrade your PHP installation, preferably to the latest version.',
+ $installedPhpVersion, self::REQUIRED_PHP_VERSION),
+ sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion)
+ );
+
+ $this->addRequirement(
+ version_compare($installedPhpVersion, '5.3.16', '!='),
+ 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it',
+ 'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)'
+ );
+
+ $this->addRequirement(
+ is_dir(__DIR__.'/../vendor/composer'),
+ 'Vendor libraries must be installed',
+ 'Vendor libraries are missing. Install composer following instructions from http://getcomposer.org/ . '.
+ 'Then run "php composer.phar install " to install them.'
+ );
+
+ $cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache';
+
+ $this->addRequirement(
+ is_writable($cacheDir),
+ 'app/cache/ or var/cache/ directory must be writable',
+ 'Change the permissions of either "app/cache/ " or "var/cache/ " directory so that the web server can write into it.'
+ );
+
+ $logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs';
+
+ $this->addRequirement(
+ is_writable($logsDir),
+ 'app/logs/ or var/logs/ directory must be writable',
+ 'Change the permissions of either "app/logs/ " or "var/logs/ " directory so that the web server can write into it.'
+ );
+
+ $this->addPhpIniRequirement(
+ 'date.timezone', true, false,
+ 'date.timezone setting must be set',
+ 'Set the "date.timezone " setting in php.ini* (like Europe/Paris).'
+ );
+
+ if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) {
+ $timezones = array();
+ foreach (DateTimeZone::listAbbreviations() as $abbreviations) {
+ foreach ($abbreviations as $abbreviation) {
+ $timezones[$abbreviation['timezone_id']] = true;
+ }
+ }
+
+ $this->addRequirement(
+ isset($timezones[date_default_timezone_get()]),
+ sprintf('Configured default timezone "%s" must be supported by your installation of PHP', date_default_timezone_get()),
+ 'Your default timezone is not supported by PHP. Check for typos in your php.ini file and have a look at the list of deprecated timezones at http://php.net/manual/en/timezones.others.php .'
+ );
+ }
+
+ $this->addRequirement(
+ function_exists('json_encode'),
+ 'json_encode() must be available',
+ 'Install and enable the JSON extension.'
+ );
+
+ $this->addRequirement(
+ function_exists('session_start'),
+ 'session_start() must be available',
+ 'Install and enable the session extension.'
+ );
+
+ $this->addRequirement(
+ function_exists('ctype_alpha'),
+ 'ctype_alpha() must be available',
+ 'Install and enable the ctype extension.'
+ );
+
+ $this->addRequirement(
+ function_exists('token_get_all'),
+ 'token_get_all() must be available',
+ 'Install and enable the Tokenizer extension.'
+ );
+
+ $this->addRequirement(
+ function_exists('simplexml_import_dom'),
+ 'simplexml_import_dom() must be available',
+ 'Install and enable the SimpleXML extension.'
+ );
+
+ if (function_exists('apc_store') && ini_get('apc.enabled')) {
+ if (version_compare($installedPhpVersion, '5.4.0', '>=')) {
+ $this->addRequirement(
+ version_compare(phpversion('apc'), '3.1.13', '>='),
+ 'APC version must be at least 3.1.13 when using PHP 5.4',
+ 'Upgrade your APC extension (3.1.13+).'
+ );
+ } else {
+ $this->addRequirement(
+ version_compare(phpversion('apc'), '3.0.17', '>='),
+ 'APC version must be at least 3.0.17',
+ 'Upgrade your APC extension (3.0.17+).'
+ );
+ }
+ }
+
+ $this->addPhpIniRequirement('detect_unicode', false);
+
+ if (extension_loaded('suhosin')) {
+ $this->addPhpIniRequirement(
+ 'suhosin.executor.include.whitelist',
+ create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'),
+ false,
+ 'suhosin.executor.include.whitelist must be configured correctly in php.ini',
+ 'Add "phar " to suhosin.executor.include.whitelist in php.ini* .'
+ );
+ }
+
+ if (extension_loaded('xdebug')) {
+ $this->addPhpIniRequirement(
+ 'xdebug.show_exception_trace', false, true
+ );
+
+ $this->addPhpIniRequirement(
+ 'xdebug.scream', false, true
+ );
+
+ $this->addPhpIniRecommendation(
+ 'xdebug.max_nesting_level',
+ create_function('$cfgValue', 'return $cfgValue > 100;'),
+ true,
+ 'xdebug.max_nesting_level should be above 100 in php.ini',
+ 'Set "xdebug.max_nesting_level " to e.g. "250 " in php.ini* to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.'
+ );
+ }
+
+ $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null;
+
+ $this->addRequirement(
+ null !== $pcreVersion,
+ 'PCRE extension must be available',
+ 'Install the PCRE extension (version 8.0+).'
+ );
+
+ /* optional recommendations follow */
+
+ $this->addRecommendation(
+ file_get_contents(__FILE__) === file_get_contents(__DIR__.'/../vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/skeleton/app/SymfonyRequirements.php'),
+ 'Requirements file should be up-to-date',
+ 'Your requirements file is outdated. Run composer install and re-check your configuration.'
+ );
+
+ $this->addRecommendation(
+ version_compare($installedPhpVersion, '5.3.4', '>='),
+ 'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions',
+ 'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.'
+ );
+
+ $this->addRecommendation(
+ version_compare($installedPhpVersion, '5.3.8', '>='),
+ 'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',
+ 'Install PHP 5.3.8 or newer if your project uses annotations.'
+ );
+
+ $this->addRecommendation(
+ version_compare($installedPhpVersion, '5.4.0', '!='),
+ 'You should not use PHP 5.4.0 due to the PHP bug #61453',
+ 'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.'
+ );
+
+ $this->addRecommendation(
+ version_compare($installedPhpVersion, '5.4.11', '>='),
+ 'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)',
+ 'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.'
+ );
+
+ $this->addRecommendation(
+ (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<'))
+ ||
+ version_compare($installedPhpVersion, '5.4.8', '>='),
+ 'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909',
+ 'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.'
+ );
+
+ if (null !== $pcreVersion) {
+ $this->addRecommendation(
+ $pcreVersion >= 8.0,
+ sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion),
+ 'PCRE 8.0+ is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.'
+ );
+ }
+
+ $this->addRecommendation(
+ class_exists('DomDocument'),
+ 'PHP-XML module should be installed',
+ 'Install and enable the PHP-XML module.'
+ );
+
+ $this->addRecommendation(
+ function_exists('mb_strlen'),
+ 'mb_strlen() should be available',
+ 'Install and enable the mbstring extension.'
+ );
+
+ $this->addRecommendation(
+ function_exists('iconv'),
+ 'iconv() should be available',
+ 'Install and enable the iconv extension.'
+ );
+
+ $this->addRecommendation(
+ function_exists('utf8_decode'),
+ 'utf8_decode() should be available',
+ 'Install and enable the XML extension.'
+ );
+
+ $this->addRecommendation(
+ function_exists('filter_var'),
+ 'filter_var() should be available',
+ 'Install and enable the filter extension.'
+ );
+
+ if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
+ $this->addRecommendation(
+ function_exists('posix_isatty'),
+ 'posix_isatty() should be available',
+ 'Install and enable the php_posix extension (used to colorize the CLI output).'
+ );
+ }
+
+ $this->addRecommendation(
+ class_exists('Locale'),
+ 'intl extension should be available',
+ 'Install and enable the intl extension (used for validators).'
+ );
+
+ if (class_exists('Collator')) {
+ $this->addRecommendation(
+ null !== new Collator('fr_FR'),
+ 'intl extension should be correctly configured',
+ 'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'
+ );
+ }
+
+ if (class_exists('Locale')) {
+ if (defined('INTL_ICU_VERSION')) {
+ $version = INTL_ICU_VERSION;
+ } else {
+ $reflector = new ReflectionExtension('intl');
+
+ ob_start();
+ $reflector->info();
+ $output = strip_tags(ob_get_clean());
+
+ preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);
+ $version = $matches[1];
+ }
+
+ $this->addRecommendation(
+ version_compare($version, '4.0', '>='),
+ 'intl ICU version should be at least 4+',
+ 'Upgrade your intl extension with a newer ICU version (4+).'
+ );
+ }
+
+ $accelerator =
+ (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'))
+ ||
+ (extension_loaded('apc') && ini_get('apc.enabled'))
+ ||
+ (extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable'))
+ ||
+ (extension_loaded('Zend OPcache') && ini_get('opcache.enable'))
+ ||
+ (extension_loaded('xcache') && ini_get('xcache.cacher'))
+ ||
+ (extension_loaded('wincache') && ini_get('wincache.ocenabled'))
+ ;
+
+ $this->addRecommendation(
+ $accelerator,
+ 'a PHP accelerator should be installed',
+ 'Install and/or enable a PHP accelerator (highly recommended).'
+ );
+
+ if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
+ $this->addPhpIniRecommendation(
+ 'realpath_cache_size',
+ create_function('$cfgValue', 'return (int) $cfgValue > 1000;'),
+ false,
+ 'realpath_cache_size should be above 1024 in php.ini',
+ 'Set "realpath_cache_size " to e.g. "1024 " in php.ini* to improve performance on windows.'
+ );
+ }
+
+ $this->addPhpIniRecommendation('short_open_tag', false);
+
+ $this->addPhpIniRecommendation('magic_quotes_gpc', false, true);
+
+ $this->addPhpIniRecommendation('register_globals', false, true);
+
+ $this->addPhpIniRecommendation('session.auto_start', false);
+
+ $this->addRecommendation(
+ class_exists('PDO'),
+ 'PDO should be installed',
+ 'Install PDO (mandatory for Doctrine).'
+ );
+
+ if (class_exists('PDO')) {
+ $drivers = PDO::getAvailableDrivers();
+ $this->addRecommendation(
+ count($drivers) > 0,
+ sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'),
+ 'Install PDO drivers (mandatory for Doctrine).'
+ );
+ }
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/app/SymfonyStandard/Composer.php b/maven-plugin-rpm/src/test/resources/files/app/SymfonyStandard/Composer.php
new file mode 100644
index 0000000..f1c85f0
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/SymfonyStandard/Composer.php
@@ -0,0 +1,22 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SymfonyStandard;
+
+use Composer\Script\CommandEvent;
+
+class Composer
+{
+ public static function hookRootPackageInstall(CommandEvent $event)
+ {
+ $event->getComposer()->getEventDispatcher()->addSubscriber(new RootPackageInstallSubscriber());
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/app/SymfonyStandard/RootPackageInstallSubscriber.php b/maven-plugin-rpm/src/test/resources/files/app/SymfonyStandard/RootPackageInstallSubscriber.php
new file mode 100644
index 0000000..89cc289
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/SymfonyStandard/RootPackageInstallSubscriber.php
@@ -0,0 +1,40 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SymfonyStandard;
+
+use Composer\EventDispatcher\EventSubscriberInterface;
+use Composer\Script\ScriptEvents;
+use Composer\Script\CommandEvent;
+use Sensio\Bundle\DistributionBundle\Composer\ScriptHandler;
+
+class RootPackageInstallSubscriber implements EventSubscriberInterface
+{
+ public static function installAcmeDemoBundle(CommandEvent $event)
+ {
+ ScriptHandler::installAcmeDemoBundle($event);
+ }
+
+ public static function setupNewDirectoryStructure(CommandEvent $event)
+ {
+ ScriptHandler::defineDirectoryStructure($event);
+ }
+
+ public static function getSubscribedEvents()
+ {
+ return array(
+ ScriptEvents::POST_INSTALL_CMD => array(
+ array('setupNewDirectoryStructure', 512),
+ array('installAcmeDemoBundle', 0)
+ ),
+ );
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/app/autoload.php b/maven-plugin-rpm/src/test/resources/files/app/autoload.php
new file mode 100644
index 0000000..70526bb
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/autoload.php
@@ -0,0 +1,13 @@
+getPhpIniConfigPath();
+
+echo_title('Symfony2 Requirements Checker');
+
+echo '> PHP is using the following php.ini file:'.PHP_EOL;
+if ($iniPath) {
+ echo_style('green', ' '.$iniPath);
+} else {
+ echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!');
+}
+
+echo PHP_EOL.PHP_EOL;
+
+echo '> Checking Symfony requirements:'.PHP_EOL.' ';
+
+$messages = array();
+foreach ($symfonyRequirements->getRequirements() as $req) {
+ /** @var $req Requirement */
+ if ($helpText = get_error_message($req, $lineSize)) {
+ echo_style('red', 'E');
+ $messages['error'][] = $helpText;
+ } else {
+ echo_style('green', '.');
+ }
+}
+
+$checkPassed = empty($messages['error']);
+
+foreach ($symfonyRequirements->getRecommendations() as $req) {
+ if ($helpText = get_error_message($req, $lineSize)) {
+ echo_style('yellow', 'W');
+ $messages['warning'][] = $helpText;
+ } else {
+ echo_style('green', '.');
+ }
+}
+
+if ($checkPassed) {
+ echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects', true);
+} else {
+ echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects', true);
+
+ echo_title('Fix the following mandatory requirements', 'red');
+
+ foreach ($messages['error'] as $helpText) {
+ echo ' * '.$helpText.PHP_EOL;
+ }
+}
+
+if (!empty($messages['warning'])) {
+ echo_title('Optional recommendations to improve your setup', 'yellow');
+
+ foreach ($messages['warning'] as $helpText) {
+ echo ' * '.$helpText.PHP_EOL;
+ }
+}
+
+echo PHP_EOL;
+echo_style('title', 'Note');
+echo ' The command console could use a different php.ini file'.PHP_EOL;
+echo_style('title', '~~~~');
+echo ' than the one used with your web server. To be on the'.PHP_EOL;
+echo ' safe side, please check the requirements from your web'.PHP_EOL;
+echo ' server using the ';
+echo_style('yellow', 'web/config.php');
+echo ' script.'.PHP_EOL;
+echo PHP_EOL;
+
+exit($checkPassed ? 0 : 1);
+
+function get_error_message(Requirement $requirement, $lineSize)
+{
+ if ($requirement->isFulfilled()) {
+ return;
+ }
+
+ $errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL;
+ $errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL;
+
+ return $errorMessage;
+}
+
+function echo_title($title, $style = null)
+{
+ $style = $style ?: 'title';
+
+ echo PHP_EOL;
+ echo_style($style, $title.PHP_EOL);
+ echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);
+ echo PHP_EOL;
+}
+
+function echo_style($style, $message)
+{
+ // ANSI color codes
+ $styles = array(
+ 'reset' => "\033[0m",
+ 'red' => "\033[31m",
+ 'green' => "\033[32m",
+ 'yellow' => "\033[33m",
+ 'error' => "\033[37;41m",
+ 'success' => "\033[37;42m",
+ 'title' => "\033[34m",
+ );
+ $supports = has_color_support();
+
+ echo ($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');
+}
+
+function echo_block($style, $title, $message)
+{
+ $message = ' '.trim($message).' ';
+ $width = strlen($message);
+
+ echo PHP_EOL.PHP_EOL;
+
+ echo_style($style, str_repeat(' ', $width).PHP_EOL);
+ echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL);
+ echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL);
+ echo_style($style, str_repeat(' ', $width).PHP_EOL);
+}
+
+function has_color_support()
+{
+ static $support;
+
+ if (null === $support) {
+ if (DIRECTORY_SEPARATOR == '\\') {
+ $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
+ } else {
+ $support = function_exists('posix_isatty') && @posix_isatty(STDOUT);
+ }
+ }
+
+ return $support;
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/app/config/config.yml b/maven-plugin-rpm/src/test/resources/files/app/config/config.yml
new file mode 100644
index 0000000..74650dd
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/config/config.yml
@@ -0,0 +1,72 @@
+imports:
+ - { resource: parameters.yml }
+ - { resource: security.yml }
+
+framework:
+ #esi: ~
+ #translator: { fallback: "%locale%" }
+ secret: "%secret%"
+ router:
+ resource: "%kernel.root_dir%/config/routing.yml"
+ strict_requirements: ~
+ form: ~
+ csrf_protection: ~
+ validation: { enable_annotations: true }
+ templating:
+ engines: ['twig']
+ #assets_version: SomeVersionScheme
+ default_locale: "%locale%"
+ trusted_hosts: ~
+ trusted_proxies: ~
+ session:
+ # handler_id set to null will use default session handler from php.ini
+ handler_id: ~
+ fragments: ~
+ http_method_override: true
+
+# Twig Configuration
+twig:
+ debug: "%kernel.debug%"
+ strict_variables: "%kernel.debug%"
+
+# Assetic Configuration
+assetic:
+ debug: "%kernel.debug%"
+ use_controller: false
+ bundles: [ ]
+ #java: /usr/bin/java
+ filters:
+ cssrewrite: ~
+ #closure:
+ # jar: "%kernel.root_dir%/Resources/java/compiler.jar"
+ #yui_css:
+ # jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
+
+# Doctrine Configuration
+doctrine:
+ dbal:
+ driver: "%database_driver%"
+ host: "%database_host%"
+ port: "%database_port%"
+ dbname: "%database_name%"
+ user: "%database_user%"
+ password: "%database_password%"
+ charset: UTF8
+ # if using pdo_sqlite as your database driver:
+ # 1. add the path in parameters.yml
+ # e.g. database_path: "%kernel.root_dir%/data/data.db3"
+ # 2. Uncomment database_path in parameters.yml.dist
+ # 3. Uncomment next line:
+ # path: "%database_path%"
+
+ orm:
+ auto_generate_proxy_classes: "%kernel.debug%"
+ auto_mapping: true
+
+# Swiftmailer Configuration
+swiftmailer:
+ transport: "%mailer_transport%"
+ host: "%mailer_host%"
+ username: "%mailer_user%"
+ password: "%mailer_password%"
+ spool: { type: memory }
diff --git a/maven-plugin-rpm/src/test/resources/files/app/config/config_dev.yml b/maven-plugin-rpm/src/test/resources/files/app/config/config_dev.yml
new file mode 100644
index 0000000..52b7372
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/config/config_dev.yml
@@ -0,0 +1,36 @@
+imports:
+ - { resource: config.yml }
+
+framework:
+ router:
+ resource: "%kernel.root_dir%/config/routing_dev.yml"
+ strict_requirements: true
+ profiler: { only_exceptions: false }
+
+web_profiler:
+ toolbar: "%debug_toolbar%"
+ intercept_redirects: "%debug_redirects%"
+
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ console:
+ type: console
+ bubble: false
+ # uncomment to get logging in your browser
+ # you may have to allow bigger header sizes in your Web server configuration
+ #firephp:
+ # type: firephp
+ # level: info
+ #chromephp:
+ # type: chromephp
+ # level: info
+
+assetic:
+ use_controller: "%use_assetic_controller%"
+
+#swiftmailer:
+# delivery_address: me@example.com
diff --git a/maven-plugin-rpm/src/test/resources/files/app/config/config_prod.yml b/maven-plugin-rpm/src/test/resources/files/app/config/config_prod.yml
new file mode 100644
index 0000000..342837a
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/config/config_prod.yml
@@ -0,0 +1,25 @@
+imports:
+ - { resource: config.yml }
+
+#framework:
+# validation:
+# cache: apc
+
+#doctrine:
+# orm:
+# metadata_cache_driver: apc
+# result_cache_driver: apc
+# query_cache_driver: apc
+
+monolog:
+ handlers:
+ main:
+ type: fingers_crossed
+ action_level: error
+ handler: nested
+ nested:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ console:
+ type: console
diff --git a/maven-plugin-rpm/src/test/resources/files/app/config/config_test.yml b/maven-plugin-rpm/src/test/resources/files/app/config/config_test.yml
new file mode 100644
index 0000000..2f6d925
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/config/config_test.yml
@@ -0,0 +1,16 @@
+imports:
+ - { resource: config_dev.yml }
+
+framework:
+ test: ~
+ session:
+ storage_id: session.storage.mock_file
+ profiler:
+ collect: false
+
+web_profiler:
+ toolbar: false
+ intercept_redirects: false
+
+swiftmailer:
+ disable_delivery: true
diff --git a/maven-plugin-rpm/src/test/resources/files/app/config/parameters.yml.dist b/maven-plugin-rpm/src/test/resources/files/app/config/parameters.yml.dist
new file mode 100644
index 0000000..122c22f
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/config/parameters.yml.dist
@@ -0,0 +1,24 @@
+# This file is a "template" of what your parameters.yml file should look like
+parameters:
+ database_driver: pdo_mysql
+ database_host: 127.0.0.1
+ database_port: ~
+ database_name: symfony
+ database_user: root
+ database_password: ~
+ # You should uncomment this if you want use pdo_sqlite
+ # database_path: "%kernel.root_dir%/data.db3"
+
+ mailer_transport: smtp
+ mailer_host: 127.0.0.1
+ mailer_user: ~
+ mailer_password: ~
+
+ locale: en
+
+ # A secret key that's used to generate certain security-related tokens
+ secret: ThisTokenIsNotSoSecretChangeIt
+
+ debug_toolbar: true
+ debug_redirects: false
+ use_assetic_controller: true
diff --git a/maven-plugin-rpm/src/test/resources/files/app/config/routing.yml b/maven-plugin-rpm/src/test/resources/files/app/config/routing.yml
new file mode 100644
index 0000000..e69de29
diff --git a/maven-plugin-rpm/src/test/resources/files/app/config/routing_dev.yml b/maven-plugin-rpm/src/test/resources/files/app/config/routing_dev.yml
new file mode 100644
index 0000000..61b7263
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/config/routing_dev.yml
@@ -0,0 +1,18 @@
+_wdt:
+ resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
+ prefix: /_wdt
+
+_profiler:
+ resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
+ prefix: /_profiler
+
+_configurator:
+ resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
+ prefix: /_configurator
+
+_main:
+ resource: routing.yml
+
+# AcmeDemoBundle routes (to be removed)
+_acme_demo:
+ resource: "@AcmeDemoBundle/Resources/config/routing.yml"
\ No newline at end of file
diff --git a/maven-plugin-rpm/src/test/resources/files/app/config/security.yml b/maven-plugin-rpm/src/test/resources/files/app/config/security.yml
new file mode 100644
index 0000000..ff5cede
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/config/security.yml
@@ -0,0 +1,52 @@
+# you can read more about security in the related section of the documentation
+# http://symfony.com/doc/current/book/security.html
+security:
+ # http://symfony.com/doc/current/book/security.html#encoding-the-user-s-password
+ encoders:
+ Symfony\Component\Security\Core\User\User: plaintext
+
+ # http://symfony.com/doc/current/book/security.html#hierarchical-roles
+ role_hierarchy:
+ ROLE_ADMIN: ROLE_USER
+ ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
+
+ # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
+ providers:
+ in_memory:
+ memory:
+ users:
+ user: { password: userpass, roles: [ 'ROLE_USER' ] }
+ admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
+
+ # the main part of the security, where you can set up firewalls
+ # for specific sections of your app
+ firewalls:
+ # disables authentication for assets and the profiler, adapt it according to your needs
+ dev:
+ pattern: ^/(_(profiler|wdt)|css|images|js)/
+ security: false
+ # the login page has to be accessible for everybody
+ demo_login:
+ pattern: ^/demo/secured/login$
+ security: false
+
+ # secures part of the application
+ demo_secured_area:
+ pattern: ^/demo/secured/
+ # it's important to notice that in this case _demo_security_check and _demo_login
+ # are route names and that they are specified in the AcmeDemoBundle
+ form_login:
+ check_path: _demo_security_check
+ login_path: _demo_login
+ logout:
+ path: _demo_logout
+ target: _demo
+ #anonymous: ~
+ #http_basic:
+ # realm: "Secured Demo Area"
+
+ # with these settings you can restrict or allow access for different parts
+ # of your application based on roles, ip, host or methods
+ # http://symfony.com/doc/current/book/security.html#security-book-access-control-matching-options
+ access_control:
+ #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
\ No newline at end of file
diff --git a/maven-plugin-rpm/src/test/resources/files/app/console b/maven-plugin-rpm/src/test/resources/files/app/console
new file mode 100755
index 0000000..fa6a36e
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/console
@@ -0,0 +1,27 @@
+#!/usr/bin/env php
+getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
+$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
+
+if ($debug) {
+ Debug::enable();
+}
+
+$kernel = new AppKernel($env, $debug);
+$application = new Application($kernel);
+$application->run($input);
diff --git a/maven-plugin-rpm/src/test/resources/files/app/phpunit.xml.dist b/maven-plugin-rpm/src/test/resources/files/app/phpunit.xml.dist
new file mode 100644
index 0000000..4a83156
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/app/phpunit.xml.dist
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+ ../src/*/*Bundle/Tests
+ ../src/*/Bundle/*Bundle/Tests
+
+
+
+
+
+
+
+ ../src
+
+ ../src/*/*Bundle/Resources
+ ../src/*/*Bundle/Tests
+ ../src/*/Bundle/*Bundle/Resources
+ ../src/*/Bundle/*Bundle/Tests
+
+
+
+
diff --git a/maven-plugin-rpm/src/test/resources/files/composer.json b/maven-plugin-rpm/src/test/resources/files/composer.json
new file mode 100644
index 0000000..a9feaba
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/composer.json
@@ -0,0 +1,59 @@
+{
+ "name": "symfony/framework-standard-edition",
+ "license": "MIT",
+ "type": "project",
+ "description": "The \"Symfony Standard Edition\" distribution",
+ "autoload": {
+ "psr-0": { "": "src/", "SymfonyStandard": "app/" }
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/symfony": "2.5.*",
+ "doctrine/orm": "~2.2,>=2.2.3",
+ "doctrine/doctrine-bundle": "~1.2",
+ "twig/extensions": "~1.0",
+ "symfony/assetic-bundle": "~2.3",
+ "symfony/swiftmailer-bundle": "~2.3",
+ "symfony/monolog-bundle": "~2.4",
+ "sensio/distribution-bundle": "~3.0",
+ "sensio/framework-extra-bundle": "~3.0",
+ "incenteev/composer-parameter-handler": "~2.0"
+ },
+ "require-dev": {
+ "sensio/generator-bundle": "~2.3"
+ },
+ "scripts": {
+ "post-root-package-install": [
+ "SymfonyStandard\\Composer::hookRootPackageInstall"
+ ],
+ "post-install-cmd": [
+ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles"
+ ],
+ "post-update-cmd": [
+ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles"
+ ]
+ },
+ "config": {
+ "bin-dir": "bin"
+ },
+ "extra": {
+ "symfony-app-dir": "app",
+ "symfony-web-dir": "web",
+ "incenteev-parameters": {
+ "file": "app/config/parameters.yml"
+ },
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/composer.lock b/maven-plugin-rpm/src/test/resources/files/composer.lock
new file mode 100644
index 0000000..987ecc4
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/composer.lock
@@ -0,0 +1,1568 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "hash": "0f5bf28fac35560dbdb2e597d32df056",
+ "packages": [
+ {
+ "name": "doctrine/annotations",
+ "version": "v1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "6a6bec0670bb6e71a263b08bc1b98ea242928633"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/6a6bec0670bb6e71a263b08bc1b98ea242928633",
+ "reference": "6a6bec0670bb6e71a263b08bc1b98ea242928633",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Annotations\\": "lib/"
+ }
+ },
+ "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": "2014-09-25 16:45:30"
+ },
+ {
+ "name": "doctrine/cache",
+ "version": "v1.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "cf483685798a72c93bf4206e3dd6358ea07d64e7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/cf483685798a72c93bf4206e3dd6358ea07d64e7",
+ "reference": "cf483685798a72c93bf4206e3dd6358ea07d64e7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=3.7",
+ "satooshi/php-coveralls": "~0.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Cache\\": "lib/"
+ }
+ },
+ "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": "Caching library offering an object-oriented API for many cache backends",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ],
+ "time": "2014-09-17 14:24:04"
+ },
+ {
+ "name": "doctrine/collections",
+ "version": "v1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/collections.git",
+ "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/b99c5c46c87126201899afe88ec490a25eedd6a2",
+ "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Collections\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com",
+ "homepage": "http://www.jwage.com/",
+ "role": "Creator"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com",
+ "homepage": "http://www.instaclick.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh",
+ "role": "Developer of wrapped JMSSerializerBundle"
+ }
+ ],
+ "description": "Collections Abstraction library",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "array",
+ "collections",
+ "iterator"
+ ],
+ "time": "2014-02-03 23:07:43"
+ },
+ {
+ "name": "doctrine/common",
+ "version": "v2.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/common.git",
+ "reference": "5db6ab40e4c531f14dad4ca96a394dfce5d4255b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/5db6ab40e4c531f14dad4ca96a394dfce5d4255b",
+ "reference": "5db6ab40e4c531f14dad4ca96a394dfce5d4255b",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "1.*",
+ "doctrine/cache": "1.*",
+ "doctrine/collections": "1.*",
+ "doctrine/inflector": "1.*",
+ "doctrine/lexer": "1.*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~3.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com",
+ "homepage": "http://www.jwage.com/",
+ "role": "Creator"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com",
+ "homepage": "http://www.instaclick.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh",
+ "role": "Developer of wrapped JMSSerializerBundle"
+ }
+ ],
+ "description": "Common Library for Doctrine projects",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "collections",
+ "eventmanager",
+ "persistence",
+ "spl"
+ ],
+ "time": "2014-05-21 19:28:51"
+ },
+ {
+ "name": "doctrine/dbal",
+ "version": "v2.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/dbal.git",
+ "reference": "0368bc031976126e5d36d37d2c56155092b6575b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/0368bc031976126e5d36d37d2c56155092b6575b",
+ "reference": "0368bc031976126e5d36d37d2c56155092b6575b",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.4",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*",
+ "symfony/console": "~2.0"
+ },
+ "suggest": {
+ "symfony/console": "For helpful console commands such as SQL execution and import of files."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\DBAL\\": "lib/"
+ }
+ },
+ "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"
+ }
+ ],
+ "description": "Database Abstraction Layer",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "persistence",
+ "queryobject"
+ ],
+ "time": "2014-10-16 11:56:49"
+ },
+ {
+ "name": "doctrine/doctrine-bundle",
+ "version": "v1.2.0",
+ "target-dir": "Doctrine/Bundle/DoctrineBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineBundle.git",
+ "reference": "765b0d87fcc3e839c74817b7211258cbef3a4fb9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/765b0d87fcc3e839c74817b7211258cbef3a4fb9",
+ "reference": "765b0d87fcc3e839c74817b7211258cbef3a4fb9",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/dbal": ">=2.2,<2.5-dev",
+ "jdorn/sql-formatter": "~1.1",
+ "php": ">=5.3.2",
+ "symfony/doctrine-bridge": "~2.2",
+ "symfony/framework-bundle": "~2.2"
+ },
+ "require-dev": {
+ "doctrine/orm": ">=2.2,<2.5-dev",
+ "symfony/validator": "~2.2",
+ "symfony/yaml": "~2.2"
+ },
+ "suggest": {
+ "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
+ "symfony/web-profiler-bundle": "to use the data collector"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Bundle\\DoctrineBundle": ""
+ }
+ },
+ "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"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ }
+ ],
+ "description": "Symfony DoctrineBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "orm",
+ "persistence"
+ ],
+ "time": "2013-03-25 20:13:59"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "v1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "54b8333d2a5682afdc690060c1cf384ba9f47f08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/54b8333d2a5682afdc690060c1cf384ba9f47f08",
+ "reference": "54b8333d2a5682afdc690060c1cf384ba9f47f08",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Inflector\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com",
+ "homepage": "http://www.jwage.com/",
+ "role": "Creator"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com",
+ "homepage": "http://www.instaclick.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh",
+ "role": "Developer of wrapped JMSSerializerBundle"
+ }
+ ],
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "inflection",
+ "pluarlize",
+ "singuarlize",
+ "string"
+ ],
+ "time": "2013-01-10 21:49:15"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "v1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "2f708a85bb3aab5d99dab8be435abd73e0b18acb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/2f708a85bb3aab5d99dab8be435abd73e0b18acb",
+ "reference": "2f708a85bb3aab5d99dab8be435abd73e0b18acb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Lexer\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com",
+ "homepage": "http://www.instaclick.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh",
+ "role": "Developer of wrapped JMSSerializerBundle"
+ }
+ ],
+ "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": "2013-01-12 18:59:04"
+ },
+ {
+ "name": "doctrine/orm",
+ "version": "v2.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/doctrine2.git",
+ "reference": "bebacf79d8d4dae9168f0f9bc6811e6c2cb6a4d9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/bebacf79d8d4dae9168f0f9bc6811e6c2cb6a4d9",
+ "reference": "bebacf79d8d4dae9168f0f9bc6811e6c2cb6a4d9",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/collections": "~1.1",
+ "doctrine/dbal": "~2.4",
+ "ext-pdo": "*",
+ "php": ">=5.3.2",
+ "symfony/console": "~2.0"
+ },
+ "require-dev": {
+ "satooshi/php-coveralls": "dev-master",
+ "symfony/yaml": "~2.1"
+ },
+ "suggest": {
+ "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
+ },
+ "bin": [
+ "bin/doctrine",
+ "bin/doctrine.php"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\ORM\\": "lib/"
+ }
+ },
+ "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"
+ }
+ ],
+ "description": "Object-Relational-Mapper for PHP",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "orm"
+ ],
+ "time": "2014-10-06 13:22:50"
+ },
+ {
+ "name": "incenteev/composer-parameter-handler",
+ "version": "v2.1.0",
+ "target-dir": "Incenteev/ParameterHandler",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Incenteev/ParameterHandler.git",
+ "reference": "143272a0a09c62616a3c8011fc165a10c6b35241"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/143272a0a09c62616a3c8011fc165a10c6b35241",
+ "reference": "143272a0a09c62616a3c8011fc165a10c6b35241",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/yaml": "~2.0"
+ },
+ "require-dev": {
+ "composer/composer": "1.0.*@dev",
+ "phpspec/prophecy-phpunit": "~1.0",
+ "symfony/filesystem": "~2.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Incenteev\\ParameterHandler": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christophe Coevoet",
+ "email": "stof@notk.org"
+ }
+ ],
+ "description": "Composer script handling your ignored parameter file",
+ "homepage": "https://github.com/Incenteev/ParameterHandler",
+ "keywords": [
+ "parameters management"
+ ],
+ "time": "2013-12-07 10:10:39"
+ },
+ {
+ "name": "jdorn/sql-formatter",
+ "version": "v1.2.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jdorn/sql-formatter.git",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "lib"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeremy Dorn",
+ "email": "jeremy@jeremydorn.com",
+ "homepage": "http://jeremydorn.com/"
+ }
+ ],
+ "description": "a PHP SQL highlighting library",
+ "homepage": "https://github.com/jdorn/sql-formatter/",
+ "keywords": [
+ "highlight",
+ "sql"
+ ],
+ "time": "2014-01-12 16:20:24"
+ },
+ {
+ "name": "kriswallsmith/assetic",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/kriswallsmith/assetic.git",
+ "reference": "df991c124a2212371443b586a1be767500036dee"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/df991c124a2212371443b586a1be767500036dee",
+ "reference": "df991c124a2212371443b586a1be767500036dee",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.1",
+ "symfony/process": "~2.1"
+ },
+ "require-dev": {
+ "cssmin/cssmin": "*",
+ "joliclic/javascript-packer": "*",
+ "kamicane/packager": "*",
+ "leafo/lessphp": "*",
+ "leafo/scssphp": "*",
+ "leafo/scssphp-compass": "*",
+ "mrclay/minify": "*",
+ "patchwork/jsqueeze": "~1.0",
+ "phpunit/phpunit": "~4",
+ "psr/log": "~1.0",
+ "ptachoire/cssembed": "*",
+ "twig/twig": "~1.6"
+ },
+ "suggest": {
+ "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
+ "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
+ "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
+ "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
+ "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
+ "twig/twig": "Assetic provides the integration with the Twig templating engine"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Assetic": "src/"
+ },
+ "files": [
+ "src/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kris Wallsmith",
+ "email": "kris.wallsmith@gmail.com",
+ "homepage": "http://kriswallsmith.net/"
+ }
+ ],
+ "description": "Asset Management for PHP",
+ "homepage": "https://github.com/kriswallsmith/assetic",
+ "keywords": [
+ "assets",
+ "compression",
+ "minification"
+ ],
+ "time": "2014-10-14 14:45:32"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
+ "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "~2.4, >2.4.8",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "phpunit/phpunit": "~3.7.0",
+ "raven/raven": "~0.5",
+ "ruflin/elastica": "0.90.*",
+ "videlalvaro/php-amqplib": "~2.4"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "raven/raven": "Allow sending log messages to a Sentry server",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2014-09-30 13:30:58"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Psr\\Log\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2012-12-21 11:40:51"
+ },
+ {
+ "name": "sensio/distribution-bundle",
+ "version": "v3.0.9",
+ "target-dir": "Sensio/Bundle/DistributionBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
+ "reference": "82d85b032db66163568ad988e630e5ad74138c72"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/82d85b032db66163568ad988e630e5ad74138c72",
+ "reference": "82d85b032db66163568ad988e630e5ad74138c72",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sensiolabs/security-checker": "~2.0",
+ "symfony/class-loader": "~2.2",
+ "symfony/form": "~2.2",
+ "symfony/framework-bundle": "~2.3",
+ "symfony/process": "~2.2",
+ "symfony/validator": "~2.2",
+ "symfony/yaml": "~2.2"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Sensio\\Bundle\\DistributionBundle": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Base bundle for Symfony Distributions",
+ "keywords": [
+ "configuration",
+ "distribution"
+ ],
+ "time": "2014-11-21 15:36:24"
+ },
+ {
+ "name": "sensio/framework-extra-bundle",
+ "version": "v3.0.3",
+ "target-dir": "Sensio/Bundle/FrameworkExtraBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
+ "reference": "b829a8097a41ccbd7d35683b1750043b23d682f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/b829a8097a41ccbd7d35683b1750043b23d682f5",
+ "reference": "b829a8097a41ccbd7d35683b1750043b23d682f5",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.2",
+ "symfony/framework-bundle": "~2.3"
+ },
+ "require-dev": {
+ "symfony/expression-language": "~2.4",
+ "symfony/security-bundle": "~2.4"
+ },
+ "suggest": {
+ "symfony/expression-language": "",
+ "symfony/security-bundle": ""
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Sensio\\Bundle\\FrameworkExtraBundle": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle provides a way to configure your controllers with annotations",
+ "keywords": [
+ "annotations",
+ "controllers"
+ ],
+ "time": "2014-11-10 14:50:31"
+ },
+ {
+ "name": "sensiolabs/security-checker",
+ "version": "v2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/security-checker.git",
+ "reference": "5b4eb4743ebe68276c911c84101ecdf4a9ae76ee"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/5b4eb4743ebe68276c911c84101ecdf4a9ae76ee",
+ "reference": "5b4eb4743ebe68276c911c84101ecdf4a9ae76ee",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "symfony/console": "~2.0"
+ },
+ "bin": [
+ "security-checker"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "SensioLabs\\Security": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "description": "A security checker for your composer.lock",
+ "time": "2014-07-19 10:52:35"
+ },
+ {
+ "name": "swiftmailer/swiftmailer",
+ "version": "v5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/swiftmailer/swiftmailer.git",
+ "reference": "b86b927dfefdb56ab0b22d1350033d9a38e9f205"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/b86b927dfefdb56ab0b22d1350033d9a38e9f205",
+ "reference": "b86b927dfefdb56ab0b22d1350033d9a38e9f205",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "mockery/mockery": "~0.9.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.3-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/swift_required.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Corbyn"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Swiftmailer, free feature-rich PHP mailer",
+ "homepage": "http://swiftmailer.org",
+ "keywords": [
+ "mail",
+ "mailer"
+ ],
+ "time": "2014-10-04 05:53:18"
+ },
+ {
+ "name": "symfony/assetic-bundle",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/AsseticBundle.git",
+ "reference": "90ea7fb66d6d5245fd4afc16e4c8070214254fec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/90ea7fb66d6d5245fd4afc16e4c8070214254fec",
+ "reference": "90ea7fb66d6d5245fd4afc16e4c8070214254fec",
+ "shasum": ""
+ },
+ "require": {
+ "kriswallsmith/assetic": "~1.2",
+ "php": ">=5.3.0",
+ "symfony/console": "~2.1",
+ "symfony/framework-bundle": "~2.1",
+ "symfony/yaml": "~2.1"
+ },
+ "require-dev": {
+ "kriswallsmith/spork": "~0.2",
+ "patchwork/jsqueeze": "~1.0",
+ "symfony/class-loader": "~2.1",
+ "symfony/css-selector": "~2.1",
+ "symfony/dom-crawler": "~2.1",
+ "symfony/twig-bundle": "~2.1"
+ },
+ "suggest": {
+ "kriswallsmith/spork": "to be able to dump assets in parallel",
+ "symfony/twig-bundle": "to use the Twig integration"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\AsseticBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kris Wallsmith",
+ "email": "kris.wallsmith@gmail.com",
+ "homepage": "http://kriswallsmith.net/"
+ }
+ ],
+ "description": "Integrates Assetic into Symfony2",
+ "homepage": "https://github.com/symfony/AsseticBundle",
+ "keywords": [
+ "assets",
+ "compression",
+ "minification"
+ ],
+ "time": "2014-10-15 12:03:38"
+ },
+ {
+ "name": "symfony/monolog-bundle",
+ "version": "v2.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/MonologBundle.git",
+ "reference": "227bbeefe30f2d95e3fe5fbd1ccda414287a957a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/MonologBundle/zipball/227bbeefe30f2d95e3fe5fbd1ccda414287a957a",
+ "reference": "227bbeefe30f2d95e3fe5fbd1ccda414287a957a",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "~1.8",
+ "php": ">=5.3.2",
+ "symfony/config": "~2.3",
+ "symfony/dependency-injection": "~2.3",
+ "symfony/http-kernel": "~2.3",
+ "symfony/monolog-bridge": "~2.3"
+ },
+ "require-dev": {
+ "symfony/console": "~2.3",
+ "symfony/yaml": "~2.3"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\MonologBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony MonologBundle",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "log",
+ "logging"
+ ],
+ "time": "2014-07-21 00:36:06"
+ },
+ {
+ "name": "symfony/swiftmailer-bundle",
+ "version": "v2.3.7",
+ "target-dir": "Symfony/Bundle/SwiftmailerBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/SwiftmailerBundle.git",
+ "reference": "e98defd402f72e8b54a029ba4d3ac4cb51dc3577"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/SwiftmailerBundle/zipball/e98defd402f72e8b54a029ba4d3ac4cb51dc3577",
+ "reference": "e98defd402f72e8b54a029ba4d3ac4cb51dc3577",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2",
+ "swiftmailer/swiftmailer": ">=4.2.0,~5.0",
+ "symfony/swiftmailer-bridge": "~2.1"
+ },
+ "require-dev": {
+ "symfony/config": "~2.1",
+ "symfony/dependency-injection": "~2.1",
+ "symfony/http-kernel": "~2.1",
+ "symfony/yaml": "~2.1"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Bundle\\SwiftmailerBundle": ""
+ }
+ },
+ "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 SwiftmailerBundle",
+ "homepage": "http://symfony.com",
+ "time": "2014-04-05 17:15:52"
+ },
+ {
+ "name": "symfony/symfony",
+ "version": "v2.5.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/symfony.git",
+ "reference": "dd4254fc39a702af22cd886a6790769541469da1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/symfony/zipball/dd4254fc39a702af22cd886a6790769541469da1",
+ "reference": "dd4254fc39a702af22cd886a6790769541469da1",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.2",
+ "php": ">=5.3.3",
+ "psr/log": "~1.0",
+ "twig/twig": "~1.12"
+ },
+ "replace": {
+ "symfony/browser-kit": "self.version",
+ "symfony/class-loader": "self.version",
+ "symfony/config": "self.version",
+ "symfony/console": "self.version",
+ "symfony/css-selector": "self.version",
+ "symfony/debug": "self.version",
+ "symfony/dependency-injection": "self.version",
+ "symfony/doctrine-bridge": "self.version",
+ "symfony/dom-crawler": "self.version",
+ "symfony/event-dispatcher": "self.version",
+ "symfony/expression-language": "self.version",
+ "symfony/filesystem": "self.version",
+ "symfony/finder": "self.version",
+ "symfony/form": "self.version",
+ "symfony/framework-bundle": "self.version",
+ "symfony/http-foundation": "self.version",
+ "symfony/http-kernel": "self.version",
+ "symfony/intl": "self.version",
+ "symfony/locale": "self.version",
+ "symfony/monolog-bridge": "self.version",
+ "symfony/options-resolver": "self.version",
+ "symfony/process": "self.version",
+ "symfony/propel1-bridge": "self.version",
+ "symfony/property-access": "self.version",
+ "symfony/proxy-manager-bridge": "self.version",
+ "symfony/routing": "self.version",
+ "symfony/security": "self.version",
+ "symfony/security-acl": "self.version",
+ "symfony/security-bundle": "self.version",
+ "symfony/security-core": "self.version",
+ "symfony/security-csrf": "self.version",
+ "symfony/security-http": "self.version",
+ "symfony/serializer": "self.version",
+ "symfony/stopwatch": "self.version",
+ "symfony/swiftmailer-bridge": "self.version",
+ "symfony/templating": "self.version",
+ "symfony/translation": "self.version",
+ "symfony/twig-bridge": "self.version",
+ "symfony/twig-bundle": "self.version",
+ "symfony/validator": "self.version",
+ "symfony/web-profiler-bundle": "self.version",
+ "symfony/yaml": "self.version"
+ },
+ "require-dev": {
+ "doctrine/data-fixtures": "1.0.*",
+ "doctrine/dbal": "~2.2",
+ "doctrine/orm": "~2.2,>=2.2.3",
+ "egulias/email-validator": "~1.2",
+ "ircmaxell/password-compat": "1.0.*",
+ "monolog/monolog": "~1.3",
+ "ocramius/proxy-manager": ">=0.3.1,<0.6-dev",
+ "propel/propel1": "~1.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\": "src/"
+ },
+ "classmap": [
+ "src/Symfony/Component/HttpFoundation/Resources/stubs",
+ "src/Symfony/Component/Intl/Resources/stubs"
+ ],
+ "files": [
+ "src/Symfony/Component/Intl/Resources/stubs/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "The Symfony PHP framework",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "framework"
+ ],
+ "time": "2014-11-20 16:00:03"
+ },
+ {
+ "name": "twig/extensions",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig-extensions.git",
+ "reference": "8cf4b9fe04077bd54fc73f4fde83347040c3b8cd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/8cf4b9fe04077bd54fc73f4fde83347040c3b8cd",
+ "reference": "8cf4b9fe04077bd54fc73f4fde83347040c3b8cd",
+ "shasum": ""
+ },
+ "require": {
+ "twig/twig": "~1.12"
+ },
+ "require-dev": {
+ "symfony/translation": "~2.3"
+ },
+ "suggest": {
+ "symfony/translation": "Allow the time_diff output to be translated"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_Extensions_": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Common additional features for Twig that do not directly belong in core",
+ "homepage": "http://twig.sensiolabs.org/doc/extensions/index.html",
+ "keywords": [
+ "i18n",
+ "text"
+ ],
+ "time": "2014-10-30 14:30:03"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v1.16.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "42f758d9fe2146d1f0470604fc05ee43580873fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/42f758d9fe2146d1f0470604fc05ee43580873fc",
+ "reference": "42f758d9fe2146d1f0470604fc05ee43580873fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.16-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ },
+ {
+ "name": "Twig Team",
+ "homepage": "https://github.com/fabpot/Twig/graphs/contributors",
+ "role": "Contributors"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "http://twig.sensiolabs.org",
+ "keywords": [
+ "templating"
+ ],
+ "time": "2014-10-17 12:53:44"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "sensio/generator-bundle",
+ "version": "v2.4.0",
+ "target-dir": "Sensio/Bundle/GeneratorBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
+ "reference": "d5c0b996a46276d50943a80f95a46b59215a0e68"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/d5c0b996a46276d50943a80f95a46b59215a0e68",
+ "reference": "d5c0b996a46276d50943a80f95a46b59215a0e68",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/console": "~2.0",
+ "symfony/framework-bundle": "~2.2"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.2,>=2.2.3",
+ "symfony/doctrine-bridge": "~2.2",
+ "twig/twig": "~1.11"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Sensio\\Bundle\\GeneratorBundle": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle generates code for you",
+ "time": "2014-09-22 14:56:14"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "platform": {
+ "php": ">=5.3.3"
+ },
+ "platform-dev": []
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/.htaccess b/maven-plugin-rpm/src/test/resources/files/src/.htaccess
new file mode 100644
index 0000000..fb1de45
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/.htaccess
@@ -0,0 +1,7 @@
+
+ Require all denied
+
+
+ Order deny,allow
+ Deny from all
+
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/AcmeDemoBundle.php b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/AcmeDemoBundle.php
new file mode 100644
index 0000000..269fc1e
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/AcmeDemoBundle.php
@@ -0,0 +1,9 @@
+getContainer().
+ *
+ * @author Tobias Schultze
+ */
+class HelloWorldCommand extends Command
+{
+ /**
+ * {@inheritdoc}
+ */
+ protected function configure()
+ {
+ $this
+ ->setName('acme:hello')
+ ->setDescription('Hello World example command')
+ ->addArgument('who', InputArgument::OPTIONAL, 'Who to greet.', 'World')
+ ->setHelp(<<%command.name% command greets somebody or everybody:
+
+php %command.full_name%
+
+The optional argument specifies who to greet:
+
+php %command.full_name% Fabien
+EOF
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ $output->writeln(sprintf('Hello %s !', $input->getArgument('who')));
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Controller/DemoController.php b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Controller/DemoController.php
new file mode 100644
index 0000000..a99de89
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Controller/DemoController.php
@@ -0,0 +1,56 @@
+ $name);
+ }
+
+ /**
+ * @Route("/contact", name="_demo_contact")
+ * @Template()
+ */
+ public function contactAction(Request $request)
+ {
+ $form = $this->createForm(new ContactType());
+ $form->handleRequest($request);
+
+ if ($form->isValid()) {
+ $mailer = $this->get('mailer');
+
+ // .. setup a message and send it
+ // http://symfony.com/doc/current/cookbook/email.html
+
+ $request->getSession()->getFlashBag()->set('notice', 'Message sent!');
+
+ return new RedirectResponse($this->generateUrl('_demo'));
+ }
+
+ return array('form' => $form->createView());
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Controller/SecuredController.php b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Controller/SecuredController.php
new file mode 100644
index 0000000..d1499e3
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Controller/SecuredController.php
@@ -0,0 +1,70 @@
+attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
+ $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
+ } else {
+ $error = $request->getSession()->get(SecurityContext::AUTHENTICATION_ERROR);
+ }
+
+ return array(
+ 'last_username' => $request->getSession()->get(SecurityContext::LAST_USERNAME),
+ 'error' => $error,
+ );
+ }
+
+ /**
+ * @Route("/login_check", name="_demo_security_check")
+ */
+ public function securityCheckAction()
+ {
+ // The security layer will intercept this request
+ }
+
+ /**
+ * @Route("/logout", name="_demo_logout")
+ */
+ public function logoutAction()
+ {
+ // The security layer will intercept this request
+ }
+
+ /**
+ * @Route("/hello", defaults={"name"="World"}),
+ * @Route("/hello/{name}", name="_demo_secured_hello")
+ * @Template()
+ */
+ public function helloAction($name)
+ {
+ return array('name' => $name);
+ }
+
+ /**
+ * @Route("/hello/admin/{name}", name="_demo_secured_hello_admin")
+ * @Security("is_granted('ROLE_ADMIN')")
+ * @Template()
+ */
+ public function helloadminAction($name)
+ {
+ return array('name' => $name);
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Controller/WelcomeController.php b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Controller/WelcomeController.php
new file mode 100644
index 0000000..884f95b
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Controller/WelcomeController.php
@@ -0,0 +1,19 @@
+render('AcmeDemoBundle:Welcome:index.html.twig');
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/DependencyInjection/AcmeDemoExtension.php b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/DependencyInjection/AcmeDemoExtension.php
new file mode 100644
index 0000000..6dfcc82
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/DependencyInjection/AcmeDemoExtension.php
@@ -0,0 +1,22 @@
+load('services.xml');
+ }
+
+ public function getAlias()
+ {
+ return 'acme_demo';
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/EventListener/ControllerListener.php b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/EventListener/ControllerListener.php
new file mode 100644
index 0000000..aa117d7
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/EventListener/ControllerListener.php
@@ -0,0 +1,24 @@
+extension = $extension;
+ }
+
+ public function onKernelController(FilterControllerEvent $event)
+ {
+ if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
+ $this->extension->setController($event->getController());
+ }
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Form/ContactType.php b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Form/ContactType.php
new file mode 100644
index 0000000..2c76cdb
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Form/ContactType.php
@@ -0,0 +1,20 @@
+add('email', 'email');
+ $builder->add('message', 'textarea');
+ }
+
+ public function getName()
+ {
+ return 'contact';
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/config/routing.yml b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/config/routing.yml
new file mode 100644
index 0000000..06291a2
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/config/routing.yml
@@ -0,0 +1,12 @@
+_welcome:
+ path: /
+ defaults: { _controller: AcmeDemoBundle:Welcome:index }
+
+_demo_secured:
+ resource: "@AcmeDemoBundle/Controller/SecuredController.php"
+ type: annotation
+
+_demo:
+ resource: "@AcmeDemoBundle/Controller/DemoController.php"
+ type: annotation
+ prefix: /demo
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/config/services.xml b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/config/services.xml
new file mode 100644
index 0000000..d6274ce
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/config/services.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/css/demo.css b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/css/demo.css
new file mode 100644
index 0000000..4dd2f16
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/css/demo.css
@@ -0,0 +1,101 @@
+body {
+ font-size: 14px;
+ font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+}
+h1.title {
+ font-size: 45px;
+ padding-bottom: 30px;
+}
+.sf-reset h2 {
+ font-weight: bold;
+ color: #FFFFFF;
+ /* Font is duplicated of body (sans-serif) */
+ font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+
+ margin-bottom: 10px;
+ background-color: #aacd4e;
+ padding: 2px 4px;
+ display: inline-block;
+ text-transform: uppercase;
+
+}
+p {
+ line-height: 20px;
+ padding-bottom: 20px;
+}
+ul#demo-list a {
+ background: url(../images/blue-arrow.png) no-repeat right 6px;
+ padding-right: 10px;
+ margin-right: 30px;
+}
+#symfony-header {
+ position: relative;
+ padding: 30px 30px 20px 30px;
+}
+.sf-reset .symfony-blocks-welcome {
+ overflow: hidden;
+}
+.sf-reset .symfony-blocks-welcome > div {
+ background-color: whitesmoke;
+ float: left;
+ width: 240px;
+ margin-right: 14px;
+ text-align: center;
+ padding: 26px 20px;
+}
+.sf-reset .symfony-blocks-welcome > div.block-demo {
+ margin-right: 0;
+}
+.sf-reset .symfony-blocks-welcome .illustration {
+ padding-bottom: 20px;
+}
+.sf-reset .symfony-blocks-help {
+ overflow: hidden;
+}
+.sf-reset .symfony-blocks-help {
+ margin-top: 30px;
+ padding: 18px;
+ border: 1px solid #E6E6E6;
+}
+.sf-reset .symfony-blocks-help > div {
+ width: 254px;
+ float: left;
+}
+.flash-message {
+ padding: 10px;
+ margin: 5px;
+ margin-top: 15px;
+ background-color: #ffe;
+}
+.sf-reset .error {
+ color: red;
+}
+#login label, #contact_form label {
+ display: block;
+ float: left;
+ width: 90px;
+}
+.sf-reset ul#menu {
+ float: right;
+ margin-bottom: 20px;
+ padding-left: 0;
+}
+.sf-reset #menu li {
+ padding-left: 0;
+ margin-right: 10px;
+ display: inline;
+}
+.sf-reset a,
+.sf-reset li a {
+ color: #08C;
+ text-decoration: none;
+}
+.sf-reset a:hover,
+.sf-reset li a:hover {
+ color: #08C;
+ text-decoration: underline;
+}
+.sf-reset .symfony-content pre {
+ white-space: pre;
+ font-family: monospace;
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/blue-arrow.png b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/blue-arrow.png
new file mode 100644
index 0000000..fa82d4b
Binary files /dev/null and b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/blue-arrow.png differ
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/field-background.gif b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/field-background.gif
new file mode 100644
index 0000000..7c0efc1
Binary files /dev/null and b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/field-background.gif differ
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/logo.gif b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/logo.gif
new file mode 100644
index 0000000..703cf45
Binary files /dev/null and b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/logo.gif differ
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/search.png b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/search.png
new file mode 100644
index 0000000..3c88b6a
Binary files /dev/null and b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/search.png differ
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/welcome-configure.gif b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/welcome-configure.gif
new file mode 100644
index 0000000..931179a
Binary files /dev/null and b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/welcome-configure.gif differ
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/welcome-demo.gif b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/welcome-demo.gif
new file mode 100644
index 0000000..0623de5
Binary files /dev/null and b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/welcome-demo.gif differ
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/welcome-quick-tour.gif b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/welcome-quick-tour.gif
new file mode 100644
index 0000000..b9018b1
Binary files /dev/null and b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/public/images/welcome-quick-tour.gif differ
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Demo/contact.html.twig b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Demo/contact.html.twig
new file mode 100644
index 0000000..e5b7523
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Demo/contact.html.twig
@@ -0,0 +1,15 @@
+{% extends "AcmeDemoBundle::layout.html.twig" %}
+
+{% block title "Symfony - Contact form" %}
+
+{% block content %}
+
+{% endblock %}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig
new file mode 100644
index 0000000..3997ff6
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig
@@ -0,0 +1,9 @@
+{% extends "AcmeDemoBundle::layout.html.twig" %}
+
+{% block title "Hello " ~ name %}
+
+{% block content %}
+ Hello {{ name }}!
+{% endblock %}
+
+{% set code = code(_self) %}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Demo/index.html.twig b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Demo/index.html.twig
new file mode 100644
index 0000000..454a320
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Demo/index.html.twig
@@ -0,0 +1,14 @@
+{% extends "AcmeDemoBundle::layout.html.twig" %}
+
+{% block title "Symfony - Demos" %}
+
+{% block content_header '' %}
+
+{% block content %}
+ Available demos
+
+{% endblock %}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/hello.html.twig b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/hello.html.twig
new file mode 100644
index 0000000..faf95cf
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/hello.html.twig
@@ -0,0 +1,11 @@
+{% extends "AcmeDemoBundle:Secured:layout.html.twig" %}
+
+{% block title "Hello " ~ name %}
+
+{% block content %}
+ Hello {{ name }}!
+
+ Hello resource secured for admin only.
+{% endblock %}
+
+{% set code = code(_self) %}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/helloadmin.html.twig b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/helloadmin.html.twig
new file mode 100644
index 0000000..4e3649f
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/helloadmin.html.twig
@@ -0,0 +1,9 @@
+{% extends "AcmeDemoBundle:Secured:layout.html.twig" %}
+
+{% block title "Hello " ~ name %}
+
+{% block content %}
+ Hello {{ name }} secured for Admins only!
+{% endblock %}
+
+{% set code = code(_self) %}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/layout.html.twig b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/layout.html.twig
new file mode 100644
index 0000000..aeea55c
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/layout.html.twig
@@ -0,0 +1,6 @@
+{% extends "AcmeDemoBundle::layout.html.twig" %}
+
+{% block content_header_more %}
+ {{ parent() }}
+ logged in as {{ app.user ? app.user.username : 'Anonymous' }} - Logout
+{% endblock %}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/login.html.twig b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/login.html.twig
new file mode 100644
index 0000000..3e76d1d
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Secured/login.html.twig
@@ -0,0 +1,35 @@
+{% extends 'AcmeDemoBundle::layout.html.twig' %}
+
+{% block content %}
+ Login
+
+
+ Choose between two default users: user/userpass (ROLE_USER) or admin/adminpass (ROLE_ADMIN)
+
+
+ {% if error %}
+ {{ error.message }}
+ {% endif %}
+
+
+{% endblock %}
+
+{% set code = code(_self) %}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Welcome/index.html.twig b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Welcome/index.html.twig
new file mode 100644
index 0000000..ea3a729
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/Welcome/index.html.twig
@@ -0,0 +1,83 @@
+{% extends 'AcmeDemoBundle::layout.html.twig' %}
+
+{% block title %}Symfony - Welcome{% endblock %}
+
+{% block content_header '' %}
+
+{% block content %}
+ {% set version = constant('Symfony\\Component\\HttpKernel\\Kernel::MAJOR_VERSION') ~ '.' ~ constant('Symfony\\Component\\HttpKernel\\Kernel::MINOR_VERSION')%}
+
+ Welcome!
+
+ Congratulations! You have successfully installed a new Symfony application.
+
+
+
+ {% if app.environment == 'dev' %}
+
+ {% endif %}
+
+
+
+
+{% endblock %}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/layout.html.twig b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/layout.html.twig
new file mode 100644
index 0000000..d7e97d5
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Resources/views/layout.html.twig
@@ -0,0 +1,37 @@
+{% extends "TwigBundle::layout.html.twig" %}
+
+{% block head %}
+
+
+{% endblock %}
+
+{% block title 'Demo Bundle' %}
+
+{% block body %}
+ {% for flashMessage in app.session.flashbag.get('notice') %}
+
+ Notice : {{ flashMessage }}
+
+ {% endfor %}
+
+ {% block content_header %}
+
+
+
+ {% endblock %}
+
+
+ {% block content %}{% endblock %}
+
+
+ {% if code is defined %}
+ Code behind this page
+
+ {% endif %}
+{% endblock %}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php
new file mode 100644
index 0000000..d217689
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php
@@ -0,0 +1,45 @@
+request('GET', '/demo/hello/Fabien');
+
+ $this->assertGreaterThan(0, $crawler->filter('html:contains("Hello Fabien")')->count());
+ }
+
+ public function testSecureSection()
+ {
+ $client = static::createClient();
+
+ // goes to the secure page
+ $crawler = $client->request('GET', '/demo/secured/hello/World');
+
+ // redirects to the login page
+ $crawler = $client->followRedirect();
+
+ // submits the login form
+ $form = $crawler->selectButton('Login')->form(array('_username' => 'admin', '_password' => 'adminpass'));
+ $client->submit($form);
+
+ // redirect to the original page (but now authenticated)
+ $crawler = $client->followRedirect();
+
+ // check that the page is the right one
+ $this->assertCount(1, $crawler->filter('h1.title:contains("Hello World!")'));
+
+ // click on the secure link
+ $link = $crawler->selectLink('Hello resource secured')->link();
+ $crawler = $client->click($link);
+
+ // check that the page is the right one
+ $this->assertCount(1, $crawler->filter('h1.title:contains("secured for Admins only!")'));
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Twig/Extension/DemoExtension.php b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Twig/Extension/DemoExtension.php
new file mode 100644
index 0000000..e6ce94f
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/src/Acme/DemoBundle/Twig/Extension/DemoExtension.php
@@ -0,0 +1,81 @@
+loader = $loader;
+ }
+
+ public function setController($controller)
+ {
+ $this->controller = $controller;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFunctions()
+ {
+ return array(
+ new \Twig_SimpleFunction('code', array($this, 'getCode'), array('is_safe' => array('html'))),
+ );
+ }
+
+ public function getCode($template)
+ {
+ // highlight_string highlights php code only if 'getControllerCode(), true);
+ $controller = str_replace('<?php ', ' ', $controller);
+
+ $template = htmlspecialchars($this->getTemplateCode($template), ENT_QUOTES, 'UTF-8');
+
+ // remove the code block
+ $template = str_replace('{% set code = code(_self) %}', '', $template);
+
+ return <<Controller Code
+$controller
+
+Template Code
+$template
+EOF;
+ }
+
+ protected function getControllerCode()
+ {
+ $class = get_class($this->controller[0]);
+ if (class_exists('CG\Core\ClassUtils')) {
+ $class = ClassUtils::getUserClass($class);
+ }
+
+ $r = new \ReflectionClass($class);
+ $m = $r->getMethod($this->controller[1]);
+
+ $code = file($r->getFilename());
+
+ return ' '.$m->getDocComment()."\n".implode('', array_slice($code, $m->getStartline() - 1, $m->getEndLine() - $m->getStartline() + 1));
+ }
+
+ protected function getTemplateCode($template)
+ {
+ return $this->loader->getSource($template->getTemplateName());
+ }
+
+ /**
+ * Returns the name of the extension.
+ *
+ * @return string The extension name
+ */
+ public function getName()
+ {
+ return 'demo';
+ }
+}
diff --git a/maven-plugin-rpm/src/test/resources/files/web/.htaccess b/maven-plugin-rpm/src/test/resources/files/web/.htaccess
new file mode 100644
index 0000000..b52e3ae
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/web/.htaccess
@@ -0,0 +1,56 @@
+# Use the front controller as index file. It serves as a fallback solution when
+# every other rewrite/redirect fails (e.g. in an aliased environment without
+# mod_rewrite). Additionally, this reduces the matching process for the
+# start page (path "/") because otherwise Apache will apply the rewriting rules
+# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
+DirectoryIndex app.php
+
+
+ RewriteEngine On
+
+ # Determine the RewriteBase automatically and set it as environment variable.
+ # If you are using Apache aliases to do mass virtual hosting or installed the
+ # project in a subdirectory, the base path will be prepended to allow proper
+ # resolution of the app.php file and to redirect to the correct URI. It will
+ # work in environments without path prefix as well, providing a safe, one-size
+ # fits all solution. But as you do not need it in this case, you can comment
+ # the following 2 lines to eliminate the overhead.
+ RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
+ RewriteRule ^(.*) - [E=BASE:%1]
+
+ # Sets the HTTP_AUTHORIZATION header removed by apache
+ RewriteCond %{HTTP:Authorization} .
+ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+
+ # Redirect to URI without front controller to prevent duplicate content
+ # (with and without `/app.php`). Only do this redirect on the initial
+ # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
+ # endless redirect loop (request -> rewrite to front controller ->
+ # redirect -> request -> ...).
+ # So in case you get a "too many redirects" error or you always get redirected
+ # to the start page because your Apache does not expose the REDIRECT_STATUS
+ # environment variable, you have 2 choices:
+ # - disable this feature by commenting the following 2 lines or
+ # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
+ # following RewriteCond (best solution)
+ RewriteCond %{ENV:REDIRECT_STATUS} ^$
+ RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
+
+ # If the requested filename exists, simply serve it.
+ # We only want to let Apache serve files and not directories.
+ RewriteCond %{REQUEST_FILENAME} -f
+ RewriteRule .? - [L]
+
+ # Rewrite all other queries to the front controller.
+ RewriteRule .? %{ENV:BASE}/app.php [L]
+
+
+
+
+ # When mod_rewrite is not available, we instruct a temporary redirect of
+ # the start page to the front controller explicitly so that the website
+ # and the generated links can still be used.
+ RedirectMatch 302 ^/$ /app.php/
+ # RedirectTemp cannot be used instead
+
+
diff --git a/maven-plugin-rpm/src/test/resources/files/web/app.php b/maven-plugin-rpm/src/test/resources/files/web/app.php
new file mode 100644
index 0000000..4f591c1
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/web/app.php
@@ -0,0 +1,29 @@
+unregister();
+$apcLoader->register(true);
+*/
+
+require_once __DIR__.'/../app/AppKernel.php';
+//require_once __DIR__.'/../app/AppCache.php';
+
+$kernel = new AppKernel('prod', false);
+$kernel->loadClassCache();
+//$kernel = new AppCache($kernel);
+
+// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
+//Request::enableHttpMethodParameterOverride();
+$request = Request::createFromGlobals();
+$response = $kernel->handle($request);
+$response->send();
+$kernel->terminate($request, $response);
diff --git a/maven-plugin-rpm/src/test/resources/files/web/app_dev.php b/maven-plugin-rpm/src/test/resources/files/web/app_dev.php
new file mode 100644
index 0000000..e0279c2
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/web/app_dev.php
@@ -0,0 +1,30 @@
+loadClassCache();
+$request = Request::createFromGlobals();
+$response = $kernel->handle($request);
+$response->send();
+$kernel->terminate($request, $response);
diff --git a/maven-plugin-rpm/src/test/resources/files/web/apple-touch-icon.png b/maven-plugin-rpm/src/test/resources/files/web/apple-touch-icon.png
new file mode 100644
index 0000000..11f17e6
Binary files /dev/null and b/maven-plugin-rpm/src/test/resources/files/web/apple-touch-icon.png differ
diff --git a/maven-plugin-rpm/src/test/resources/files/web/config.php b/maven-plugin-rpm/src/test/resources/files/web/config.php
new file mode 100644
index 0000000..162acfc
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/web/config.php
@@ -0,0 +1,124 @@
+getFailedRequirements();
+$minorProblems = $symfonyRequirements->getFailedRecommendations();
+
+?>
+
+
+
+
+
+ Symfony Configuration
+
+
+
+
+
+
+
+
+
+
+
+
Welcome!
+
Welcome to your new Symfony project.
+
+ This script will guide you through the basic configuration of your project.
+ You can also do the same by editing the ‘app/config/parameters.yml ’ file directly.
+
+
+
+
Major problems
+
Major problems have been detected and must be fixed before continuing:
+
+
+ getHelpHtml() ?>
+
+
+
+
+
+
Recommendations
+
+ Additionally, toTo enhance your Symfony experience,
+ it’s recommended that you fix the following:
+
+
+
+ getHelpHtml() ?>
+
+
+
+
+ hasPhpIniConfigIssue()): ?>
+
*
+ getPhpIniConfigPath()): ?>
+ Changes to the php.ini file must be done in "getPhpIniConfigPath() ?> ".
+
+ To change settings, create a "php.ini ".
+
+
+
+
+
+
Your configuration looks good to run Symfony.
+
+
+
+
+
+
+
Symfony Standard Edition
+
+
+
diff --git a/maven-plugin-rpm/src/test/resources/files/web/favicon.ico b/maven-plugin-rpm/src/test/resources/files/web/favicon.ico
new file mode 100644
index 0000000..479f7f5
Binary files /dev/null and b/maven-plugin-rpm/src/test/resources/files/web/favicon.ico differ
diff --git a/maven-plugin-rpm/src/test/resources/files/web/robots.txt b/maven-plugin-rpm/src/test/resources/files/web/robots.txt
new file mode 100644
index 0000000..214e411
--- /dev/null
+++ b/maven-plugin-rpm/src/test/resources/files/web/robots.txt
@@ -0,0 +1,4 @@
+# www.robotstxt.org/
+# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
+
+User-agent: *