From d42172c983a5c4c729bc9fe2e3b021c66e2d099a Mon Sep 17 00:00:00 2001 From: Vasileios Georgitzikis Date: Fri, 9 Jan 2015 05:02:10 +0200 Subject: [PATCH 01/10] Initial fix for containing the deletion Actions These Controller actions are much bigger than they should be, and so the main logic should go to a Handler. Initial implementation for the 1st one (untelsted) --- .../Controller/DefaultController.php | 52 +++----------- .../Handler/DeletionHandler.php | 72 +++++++++++++++++++ .../Resources/config/services.yml | 4 ++ 3 files changed, 87 insertions(+), 41 deletions(-) create mode 100644 Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php diff --git a/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php b/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php index 1070802..20a3eb7 100644 --- a/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php +++ b/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php @@ -15,6 +15,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; use Codebender\CompilerBundle\Handler\CompilerHandler; +use Codebender\CompilerBundle\Handler\DeletionHandler; class DefaultController extends Controller { @@ -78,50 +79,19 @@ public function deleteAllObjectsAction($auth_key, $version) if ($version != "v1") return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Invalid API version."))); - $tempDir = $this->container->getParameter('temp_dir'); - $objectFilesDir = $this->container->getParameter('objdir'); - $fileCount = 0; - $undeletedFiles = ""; - $deletionStats = array("success_dot_a" => 0, - "failure_dot_a" => 0, - "success_dot_o" => 0, - "failure_dot_o" => 0, - "success_dot_d" => 0, - "failure_dot_d" => 0, - "success_dot_LOCK" => 0, - "failure_dot_LOCK" => 0); + //Get the compiler service + /** @var DeletionHandler $deleter */ + $deleter = $this->get('deletion_handler'); - if ($handle = opendir("$tempDir/$objectFilesDir")) - { + $deleter->deleteAllObjects($success, $fileCount, $deletionStats, $undeletedFiles); - while (false !== ($entry = readdir($handle))) - { - if ($entry != "." && $entry != ".." && $entry != ".DS_Store") - { - $fileCount++; - $extension = pathinfo($entry, PATHINFO_EXTENSION); - - if (!in_array($extension, array("a", "o", "d", "LOCK"))) - continue; - - if (@unlink("$tempDir/$objectFilesDir/$entry") === false) - { - $deletionStats["failure_dot_$extension"]++; - $undeletedFiles .= $entry."\n"; - } - else - $deletionStats["success_dot_$extension"]++; - } - } - closedir($handle); - } - else + if ($success === false) return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Failed to access object files directory."))); - - return new Response(json_encode(array_merge(array("success" => true, - "message" => "Object files deletion complete. Found $fileCount files."), - $deletionStats, - array("Files not deleted" => $undeletedFiles)))); + else + return new Response(json_encode(array_merge(array("success" => true, + "message" => "Object files deletion complete. Found $fileCount files."), + $deletionStats, + array("Files not deleted" => $undeletedFiles)))); } public function deleteSpecificObjectsAction($auth_key, $version, $option, $to_delete) diff --git a/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php new file mode 100644 index 0000000..42e4d47 --- /dev/null +++ b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php @@ -0,0 +1,72 @@ +compiler_logger = $logger; + $this->object_directory = $objdir; + } + + function deleteAllObjects(&$success, &$fileCount, &$deletionStats, &$undeletedFiles) + { + $success = false; + $fileCount = 0; + $undeletedFiles = ""; + $deletionStats = array("success_dot_a" => 0, + "failure_dot_a" => 0, + "success_dot_o" => 0, + "failure_dot_o" => 0, + "success_dot_d" => 0, + "failure_dot_d" => 0, + "success_dot_LOCK" => 0, + "failure_dot_LOCK" => 0); + + if ($handle = opendir($this->object_directory)) + { + $success = true; + + while (false !== ($entry = readdir($handle))) + { + if ($entry != "." && $entry != ".." && $entry != ".DS_Store") + { + $fileCount++; + $extension = pathinfo($entry, PATHINFO_EXTENSION); + + if (!in_array($extension, array("a", "o", "d", "LOCK"))) + continue; + + if (@unlink($this->object_directory."/$entry") === false) + { + $deletionStats["failure_dot_$extension"]++; + $undeletedFiles .= $entry."\n"; + } + else + $deletionStats["success_dot_$extension"]++; + } + } + closedir($handle); + } + } +} \ No newline at end of file diff --git a/Symfony/src/Codebender/CompilerBundle/Resources/config/services.yml b/Symfony/src/Codebender/CompilerBundle/Resources/config/services.yml index a529420..675bd9e 100644 --- a/Symfony/src/Codebender/CompilerBundle/Resources/config/services.yml +++ b/Symfony/src/Codebender/CompilerBundle/Resources/config/services.yml @@ -4,6 +4,7 @@ parameters: utility_handler.class: Codebender\CompilerBundle\Handler\UtilityHandler preprocessing_handler.class: Codebender\CompilerBundle\Handler\PreprocessingHandler postprocessing_handler.class: Codebender\CompilerBundle\Handler\PostprocessingHandler + deletion_handler.class: Codebender\CompilerBundle\Handler\DeletionHandler services: # codebender_compiler.example: @@ -18,6 +19,9 @@ services: class: "%preprocessing_handler.class%" postprocessing_handler: class: "%postprocessing_handler.class%" + deletion_handler: + class: "%deletion_handler.class%" + arguments: ["@compiler_logger", "%temp_dir%/%objdir%"] compiler_logger: class: Symfony\Bridge\Monolog\Logger arguments: [cmplr_log] From af9191310f6045c3f04f3c5c549f6ceb6c666b3e Mon Sep 17 00:00:00 2001 From: Vasileios Georgitzikis Date: Fri, 9 Jan 2015 05:19:39 +0200 Subject: [PATCH 02/10] Fixed 2nd deletion Action size Moved code to DeletionHandler Service --- .../Controller/DefaultController.php | 36 +++---------------- .../Handler/DeletionHandler.php | 36 +++++++++++++++++++ 2 files changed, 41 insertions(+), 31 deletions(-) diff --git a/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php b/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php index 20a3eb7..4bce790 100644 --- a/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php +++ b/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php @@ -102,39 +102,13 @@ public function deleteSpecificObjectsAction($auth_key, $version, $option, $to_de if ($version != "v1") return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Invalid API version."))); - $tempDir = $this->container->getParameter('temp_dir'); - $objectFilesDir = $this->container->getParameter('objdir'); - - if ($option == "core") - $to_delete = str_replace(":", "_", $to_delete); - - $response = array(); - $response["deleted_files"] = ""; - $response["undeleted_files"] = ""; - - if ($handle = opendir("$tempDir/$objectFilesDir")) - { - while (false !== ($entry = readdir($handle))) - { - if ($entry == "." || $entry == ".." || $entry == ".DS_Store") - continue; - - if ($option == "library" && strpos($entry, "______".$to_delete."_______") === false) - continue; - - if ($option == "core" && strpos($entry, "_".$to_delete."_") === false) - continue; - + //Get the compiler service + /** @var DeletionHandler $deleter */ + $deleter = $this->get('deletion_handler'); - if (@unlink("$tempDir/$objectFilesDir/$entry") === false) - $response["undeleted_files"] .= $entry."\n"; - else - $response["deleted_files"] .= $entry."\n"; + $deleter->deleteSpecificObjects($success, $response, $option, $to_delete); - } - closedir($handle); - } - else + if ($success === false) { return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Failed to access object files directory."))); } diff --git a/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php index 42e4d47..042d6c0 100644 --- a/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php +++ b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php @@ -69,4 +69,40 @@ function deleteAllObjects(&$success, &$fileCount, &$deletionStats, &$undeletedFi closedir($handle); } } + + function deleteSpecificObjects(&$success, &$response, &$option, &$to_delete) + { + if ($option == "core") + $to_delete = str_replace(":", "_", $to_delete); + + $success = true; + $response = array(); + $response["deleted_files"] = ""; + $response["undeleted_files"] = ""; + + if ($handle = opendir($this->object_directory)) + { + while (false !== ($entry = readdir($handle))) + { + if ($entry == "." || $entry == ".." || $entry == ".DS_Store") + continue; + + if ($option == "library" && strpos($entry, "______".$to_delete."_______") === false) + continue; + + if ($option == "core" && strpos($entry, "_".$to_delete."_") === false) + continue; + + + if (@unlink($this->object_directory."/$entry") === false) + $response["undeleted_files"] .= $entry."\n"; + else + $response["deleted_files"] .= $entry."\n"; + + } + closedir($handle); + } + else + $success = false; + } } \ No newline at end of file From 95f8e21faac4a1b73636a7a98d70e686dfc42e72 Mon Sep 17 00:00:00 2001 From: Vasileios Georgitzikis Date: Fri, 9 Jan 2015 05:35:34 +0200 Subject: [PATCH 03/10] Updated Symfony version and dependencies --- Symfony/app/SymfonyRequirements.php | 18 +- Symfony/composer.json | 9 +- Symfony/composer.lock | 1538 +++++++++++++++++++++------ 3 files changed, 1253 insertions(+), 312 deletions(-) diff --git a/Symfony/app/SymfonyRequirements.php b/Symfony/app/SymfonyRequirements.php index 30b1a9b..0f89996 100644 --- a/Symfony/app/SymfonyRequirements.php +++ b/Symfony/app/SymfonyRequirements.php @@ -554,6 +554,20 @@ function_exists('simplexml_import_dom'), '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, @@ -564,8 +578,8 @@ function_exists('simplexml_import_dom'), $this->addRecommendation( class_exists('DomDocument'), - 'PHP-XML module should be installed', - 'Install and enable the PHP-XML module.' + 'PHP-DOM and PHP-XML modules should be installed', + 'Install and enable the PHP-DOM and the PHP-XML modules.' ); $this->addRecommendation( diff --git a/Symfony/composer.json b/Symfony/composer.json index f660325..dae89f0 100644 --- a/Symfony/composer.json +++ b/Symfony/composer.json @@ -20,9 +20,12 @@ "sensio/generator-bundle": "2.3.*", "incenteev/composer-parameter-handler": "~2.0" }, - "require-dev": { - "satooshi/php-coveralls": "dev-master" - }, + "require-dev": { + "phpunit/phpunit": "3.7.*", + "satooshi/php-coveralls": "dev-master", + "sebastian/phpcpd": "*", + "phpmd/phpmd" : "2.0.*" + }, "scripts": { "post-install-cmd": [ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", diff --git a/Symfony/composer.lock b/Symfony/composer.lock index b32a4bf..2c168f5 100644 --- a/Symfony/composer.lock +++ b/Symfony/composer.lock @@ -4,34 +4,247 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "57b4d41eb88bf43c7921752ac91ddbb0", + "hash": "1b10e7b343722185585de0eb6b2b6a16", "packages": [ + { + "name": "doctrine/annotations", + "version": "v1.2.3", + "source": { + "type": "git", + "url": "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/doctrine/annotations.git", + "reference": "eeda578cbe24a170331a1cfdf78be723412df7a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/eeda578cbe24a170331a1cfdf78be723412df7a4", + "reference": "eeda578cbe24a170331a1cfdf78be723412df7a4", + "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-12-20 20:49:38" + }, + { + "name": "doctrine/cache", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "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/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": "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/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": "/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": "2.3.0", + "version": "v2.4.2", "source": { "type": "git", - "url": "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/doctrine/common", - "reference": "2.3.0" + "url": "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/doctrine/common.git", + "reference": "5db6ab40e4c531f14dad4ca96a394dfce5d4255b" }, "dist": { "type": "zip", - "url": "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/doctrine/common/zipball/2.3.0", - "reference": "2.3.0", + "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.3.x-dev" + "dev-master": "2.4.x-dev" } }, "autoload": { "psr-0": { - "Doctrine\\Common": "lib/" + "Doctrine\\Common\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -42,7 +255,8 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" + "homepage": "http://www.jwage.com/", + "role": "Creator" }, { "name": "Guilherme Blanco", @@ -60,7 +274,7 @@ { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com", - "homepage": "http://jmsyst.com", + "homepage": "/schmittjoh", "role": "Developer of wrapped JMSSerializerBundle" } ], @@ -73,20 +287,20 @@ "persistence", "spl" ], - "time": "2012-09-19 22:55:18" + "time": "2014-05-21 19:28:51" }, { "name": "doctrine/dbal", - "version": "2.3.4", + "version": "2.3.5", "source": { "type": "git", "url": "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/doctrine/dbal.git", - "reference": "2.3.4" + "reference": "d5067b0b7e5ef59ba165dcc116c539400bf957ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/2.3.4", - "reference": "2.3.4", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/d5067b0b7e5ef59ba165dcc116c539400bf957ff", + "reference": "d5067b0b7e5ef59ba165dcc116c539400bf957ff", "shasum": "" }, "require": { @@ -109,16 +323,6 @@ "MIT" ], "authors": [ - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -126,6 +330,14 @@ { "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", @@ -136,7 +348,7 @@ "persistence", "queryobject" ], - "time": "2013-05-11 07:45:37" + "time": "2014-09-15 11:44:29" }, { "name": "doctrine/doctrine-bundle", @@ -209,41 +421,34 @@ "time": "2013-03-25 20:13:59" }, { - "name": "doctrine/orm", - "version": "2.3.4", + "name": "doctrine/inflector", + "version": "v1.0.1", "source": { "type": "git", - "url": "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/doctrine/doctrine2.git", - "reference": "2.3.4" + "url": "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/doctrine/inflector.git", + "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/2.3.4", - "reference": "2.3.4", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/0bcb2e79d8571787f18b7eb036ed3d004908e604", + "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604", "shasum": "" }, "require": { - "doctrine/dbal": "2.3.*", - "ext-pdo": "*", - "php": ">=5.3.2", - "symfony/console": "2.*" + "php": ">=5.3.2" }, - "suggest": { - "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + "require-dev": { + "phpunit/phpunit": "4.*" }, - "bin": [ - "bin/doctrine", - "bin/doctrine.php" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-0": { - "Doctrine\\ORM": "lib/" + "Doctrine\\Common\\Inflector\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -252,63 +457,62 @@ ], "authors": [ { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" }, { "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" + "email": "guilhermeblanco@gmail.com" }, { - "name": "Roman Borschel", - "email": "roman@code-factory.org" + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" }, { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Object-Relational-Mapper for PHP", + "description": "Common String Manipulations with regard to casing and singular/plural rules.", "homepage": "http://www.doctrine-project.org", "keywords": [ - "database", - "orm" + "inflection", + "pluralize", + "singularize", + "string" ], - "time": "2013-05-11 07:51:12" + "time": "2014-12-20 21:24:13" }, { - "name": "incenteev/composer-parameter-handler", - "version": "v2.0.0", - "target-dir": "Incenteev/ParameterHandler", + "name": "doctrine/lexer", + "version": "v1.0.1", "source": { "type": "git", - "url": "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/Incenteev/ParameterHandler.git", - "reference": "v2.0.0" + "url": "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/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/v2.0.0", - "reference": "v2.0.0", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/yaml": ">=2.0,<3.0" - }, - "require-dev": { - "composer/composer": "*" + "php": ">=5.3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-0": { - "Incenteev\\ParameterHandler": "" + "Doctrine\\Common\\Lexer\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -317,48 +521,180 @@ ], "authors": [ { - "name": "Christophe Coevoet", - "email": "stof@notk.org" + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Composer script handling your ignored parameter file", - "homepage": "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/Incenteev/ParameterHandler", + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", "keywords": [ - "parameters management" + "lexer", + "parser" ], - "time": "2013-04-06 17:15:44" + "time": "2014-09-09 13:34:57" }, { - "name": "jdorn/sql-formatter", - "version": "v1.2.9", + "name": "doctrine/orm", + "version": "v2.3.6", "source": { "type": "git", - "url": "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/jdorn/sql-formatter.git", - "reference": "v1.2.9" + "url": "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/doctrine/doctrine2.git", + "reference": "c2135b38216c6c8a410e764792aa368e946f2ae5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/v1.2.9", - "reference": "v1.2.9", + "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/c2135b38216c6c8a410e764792aa368e946f2ae5", + "reference": "c2135b38216c6c8a410e764792aa368e946f2ae5", "shasum": "" }, "require": { - "php": ">=5.2.4" + "doctrine/dbal": "2.3.*", + "ext-pdo": "*", + "php": ">=5.3.2", + "symfony/console": "2.*" }, - "require-dev": { - "phpunit/phpunit": "3.7.*" + "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": "1.3.x-dev" + "dev-master": "2.3.x-dev" } }, "autoload": { - "classmap": [ - "lib" - ] - }, + "psr-0": { + "Doctrine\\ORM": "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" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "orm" + ], + "time": "2014-06-03 19:53:45" + }, + { + "name": "incenteev/composer-parameter-handler", + "version": "v2.1.0", + "target-dir": "Incenteev/ParameterHandler", + "source": { + "type": "git", + "url": "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/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": "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/Incenteev/ParameterHandler", + "keywords": [ + "parameters management" + ], + "time": "2013-12-07 10:10:39" + }, + { + "name": "jdorn/sql-formatter", + "version": "v1.2.17", + "source": { + "type": "git", + "url": "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/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" @@ -376,25 +712,25 @@ "highlight", "sql" ], - "time": "2013-04-26 18:42:52" + "time": "2014-01-12 16:20:24" }, { "name": "kriswallsmith/assetic", - "version": "v1.1.1", + "version": "v1.1.3", "source": { "type": "git", "url": "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/kriswallsmith/assetic.git", - "reference": "v1.1.1" + "reference": "02105abcd35fb32933bc566e4c3bec84c612e9c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/v1.1.1", - "reference": "v1.1.1", + "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/02105abcd35fb32933bc566e4c3bec84c612e9c1", + "reference": "02105abcd35fb32933bc566e4c3bec84c612e9c1", "shasum": "" }, "require": { "php": ">=5.3.1", - "symfony/process": ">=2.1,<3.0" + "symfony/process": "~2.1" }, "require-dev": { "cssmin/cssmin": "*", @@ -404,9 +740,9 @@ "leafo/scssphp": "*", "leafo/scssphp-compass": "*", "mrclay/minify": "*", - "phpunit/phpunit": ">=3.7,<4.0", + "phpunit/phpunit": "~3.7", "ptachoire/cssembed": "*", - "twig/twig": ">=1.6,<2.0" + "twig/twig": "~1.6" }, "suggest": { "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", @@ -447,47 +783,58 @@ "compression", "minification" ], - "time": "2013-06-01 22:13:43" + "time": "2014-12-12 05:37:00" }, { "name": "monolog/monolog", - "version": "1.5.0", + "version": "1.12.0", "source": { "type": "git", "url": "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/Seldaek/monolog.git", - "reference": "1.5.0" + "reference": "1fbe8c2641f2b163addf49cc5e18f144bec6b19f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1.5.0", - "reference": "1.5.0", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1fbe8c2641f2b163addf49cc5e18f144bec6b19f", + "reference": "1fbe8c2641f2b163addf49cc5e18f144bec6b19f", "shasum": "" }, "require": { "php": ">=5.3.0", - "psr/log": ">=1.0,<2.0" + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" }, "require-dev": { - "doctrine/couchdb": "dev-master", - "mlehner/gelf-php": "1.0.*", - "raven/raven": "0.3.*" + "aws/aws-sdk-php": "~2.4, >2.4.8", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "phpunit/phpunit": "~4.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", - "mlehner/gelf-php": "Allow sending log messages to a GrayLog2 server", - "raven/raven": "Allow sending log messages to a Sentry 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.4.x-dev" + "dev-master": "1.12.x-dev" } }, "autoload": { - "psr-0": { - "Monolog": "src/" + "psr-4": { + "Monolog\\": "src/Monolog" } }, "notification-url": "https://packagist.org/downloads/", @@ -498,8 +845,7 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be", - "role": "Developer" + "homepage": "http://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", @@ -509,7 +855,7 @@ "logging", "psr-3" ], - "time": "2013-04-23 10:09:48" + "time": "2014-12-29 21:29:35" }, { "name": "psr/log", @@ -551,17 +897,17 @@ }, { "name": "sensio/distribution-bundle", - "version": "v2.3.2", + "version": "v2.3.8", "target-dir": "Sensio/Bundle/DistributionBundle", "source": { "type": "git", "url": "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/sensiolabs/SensioDistributionBundle.git", - "reference": "v2.3.2" + "reference": "9a72f821957141ee3d9703da3fa8266d59ef4b1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/v2.3.2", - "reference": "v2.3.2", + "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/9a72f821957141ee3d9703da3fa8266d59ef4b1c", + "reference": "9a72f821957141ee3d9703da3fa8266d59ef4b1c", "shasum": "" }, "require": { @@ -593,21 +939,21 @@ "configuration", "distribution" ], - "time": "2013-07-17 06:24:17" + "time": "2015-01-07 07:11:03" }, { "name": "sensio/framework-extra-bundle", - "version": "v2.3.2", + "version": "v2.3.4", "target-dir": "Sensio/Bundle/FrameworkExtraBundle", "source": { "type": "git", "url": "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/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "v2.3.2" + "reference": "cce05719041d952bbec856789ca18646a1891d03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/v2.3.2", - "reference": "v2.3.2", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/cce05719041d952bbec856789ca18646a1891d03", + "reference": "cce05719041d952bbec856789ca18646a1891d03", "shasum": "" }, "require": { @@ -632,7 +978,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" } ], "description": "This bundle provides a way to configure your controllers with annotations", @@ -640,21 +988,21 @@ "annotations", "controllers" ], - "time": "2013-07-09 09:29:53" + "time": "2013-07-24 08:49:53" }, { "name": "sensio/generator-bundle", - "version": "v2.3.2", + "version": "v2.3.5", "target-dir": "Sensio/Bundle/GeneratorBundle", "source": { "type": "git", "url": "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/sensiolabs/SensioGeneratorBundle.git", - "reference": "v2.3.2" + "reference": "8b7a33aa3d22388443b6de0b0cf184122e9f60d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/v2.3.2", - "reference": "v2.3.2", + "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/8b7a33aa3d22388443b6de0b0cf184122e9f60d2", + "reference": "8b7a33aa3d22388443b6de0b0cf184122e9f60d2", "shasum": "" }, "require": { @@ -684,33 +1032,38 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" } ], "description": "This bundle generates code for you", - "time": "2013-07-04 12:20:59" + "time": "2014-04-28 14:01:06" }, { "name": "swiftmailer/swiftmailer", - "version": "v5.0.1", + "version": "v5.3.1", "source": { "type": "git", "url": "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/swiftmailer/swiftmailer.git", - "reference": "v5.0.1" + "reference": "c5f963e7f9d6f6438fda4f22d5cc2db296ec621a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/v5.0.1", - "reference": "v5.0.1", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/c5f963e7f9d6f6438fda4f22d5cc2db296ec621a", + "reference": "c5f963e7f9d6f6438fda4f22d5cc2db296ec621a", "shasum": "" }, "require": { - "php": ">=5.2.4" + "php": ">=5.3.3" + }, + "require-dev": { + "mockery/mockery": "~0.9.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-master": "5.3-dev" } }, "autoload": { @@ -724,11 +1077,11 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Chris Corbyn" }, { - "name": "Chris Corbyn" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Swiftmailer, free feature-rich PHP mailer", @@ -737,36 +1090,36 @@ "mail", "mailer" ], - "time": "2013-06-17 13:32:32" + "time": "2014-12-05 14:17:14" }, { "name": "symfony/assetic-bundle", - "version": "v2.3.0", + "version": "v2.3.1", "target-dir": "Symfony/Bundle/AsseticBundle", "source": { "type": "git", "url": "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/symfony/AsseticBundle.git", - "reference": "v2.3.0" + "reference": "099e0bb5d80e7039af20db384a41017fde521f21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/v2.3.0", - "reference": "v2.3.0", + "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/099e0bb5d80e7039af20db384a41017fde521f21", + "reference": "099e0bb5d80e7039af20db384a41017fde521f21", "shasum": "" }, "require": { - "kriswallsmith/assetic": ">=1.1,<2.0", + "kriswallsmith/assetic": "1.1.x", "php": ">=5.3.0", - "symfony/framework-bundle": ">=2.1,<3.0" + "symfony/framework-bundle": "~2.1" }, "require-dev": { - "symfony/class-loader": ">=2.1,<3.0", - "symfony/console": ">=2.1,<3.0", - "symfony/css-selector": ">=2.1,<3.0", - "symfony/dom-crawler": ">=2.1,<3.0", - "symfony/form": ">=2.1,<3.0", - "symfony/twig-bundle": ">=2.1,<3.0", - "symfony/yaml": ">=2.1,<3.0" + "symfony/class-loader": "~2.1", + "symfony/console": "~2.1", + "symfony/css-selector": "~2.1", + "symfony/dom-crawler": "~2.1", + "symfony/form": "~2.1", + "symfony/twig-bundle": "~2.1", + "symfony/yaml": "~2.1" }, "suggest": { "symfony/twig-bundle": "~2.1" @@ -774,7 +1127,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "2.3-dev" } }, "autoload": { @@ -800,54 +1153,7 @@ "compression", "minification" ], - "time": "2013-05-16 05:32:23" - }, - { - "name": "symfony/icu", - "version": "v1.0.0", - "target-dir": "Symfony/Component/Icu", - "source": { - "type": "git", - "url": "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/symfony/Icu.git", - "reference": "v1.0.0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Icu/zipball/v1.0.0", - "reference": "v1.0.0", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/intl": ">=2.3,<3.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Symfony\\Component\\Icu\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Contains an excerpt of the ICU data and classes to load it.", - "homepage": "http://symfony.com", - "keywords": [ - "icu", - "intl" - ], - "time": "2013-06-03 18:32:07" + "time": "2013-11-25 16:34:50" }, { "name": "symfony/monolog-bundle", @@ -909,22 +1215,21 @@ }, { "name": "symfony/swiftmailer-bundle", - "version": "v2.3.2", - "target-dir": "Symfony/Bundle/SwiftmailerBundle", + "version": "v2.3.8", "source": { "type": "git", "url": "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/symfony/SwiftmailerBundle.git", - "reference": "v2.3.2" + "reference": "970b13d01871207e81d17b17ddda025e7e21e797" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/SwiftmailerBundle/zipball/v2.3.2", - "reference": "v2.3.2", + "url": "https://api.github.com/repos/symfony/SwiftmailerBundle/zipball/970b13d01871207e81d17b17ddda025e7e21e797", + "reference": "970b13d01871207e81d17b17ddda025e7e21e797", "shasum": "" }, "require": { "php": ">=5.3.2", - "swiftmailer/swiftmailer": ">=4.2.0,<5.1-dev", + "swiftmailer/swiftmailer": ">=4.2.0,~5.0", "symfony/swiftmailer-bridge": "~2.1" }, "require-dev": { @@ -933,15 +1238,18 @@ "symfony/http-kernel": "~2.1", "symfony/yaml": "~2.1" }, + "suggest": { + "psr/log": "Allows logging" + }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.3-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Bundle\\SwiftmailerBundle": "" + "psr-4": { + "Symfony\\Bundle\\SwiftmailerBundle\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -949,39 +1257,38 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony SwiftmailerBundle", "homepage": "http://symfony.com", - "time": "2013-05-15 08:38:58" + "time": "2014-12-01 17:44:50" }, { "name": "symfony/symfony", - "version": "v2.3.2", + "version": "v2.3.24", "source": { "type": "git", "url": "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/symfony/symfony.git", - "reference": "v2.3.2" + "reference": "5b2c33be25fdb94233e2c2625ee2d69289f24300" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/symfony/zipball/v2.3.2", - "reference": "v2.3.2", + "url": "https://api.github.com/repos/symfony/symfony/zipball/5b2c33be25fdb94233e2c2625ee2d69289f24300", + "reference": "5b2c33be25fdb94233e2c2625ee2d69289f24300", "shasum": "" }, "require": { - "doctrine/common": "~2.2", + "doctrine/common": "~2.3", "php": ">=5.3.3", "psr/log": "~1.0", - "symfony/icu": "~1.0", - "twig/twig": "~1.11" + "twig/twig": "~1.12,>=1.12.3" }, "replace": { "symfony/browser-kit": "self.version", @@ -1026,10 +1333,10 @@ "doctrine/data-fixtures": "1.0.*", "doctrine/dbal": "~2.2", "doctrine/orm": "~2.2,>=2.2.3", - "ircmaxell/password-compat": "1.0.*", + "ircmaxell/password-compat": "~1.0", "monolog/monolog": "~1.3", - "ocramius/proxy-manager": ">=0.3.1,<0.4-dev", - "propel/propel1": "1.6.*" + "ocramius/proxy-manager": "~0.3.1", + "propel/propel1": "~1.6" }, "type": "library", "extra": { @@ -1054,13 +1361,13 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "The Symfony PHP framework", @@ -1068,24 +1375,24 @@ "keywords": [ "framework" ], - "time": "2013-07-17 06:22:21" + "time": "2015-01-07 10:32:09" }, { "name": "twig/extensions", - "version": "v1.0.0", + "version": "v1.0.1", "source": { "type": "git", - "url": "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/fabpot/Twig-extensions.git", - "reference": "v1.0.0" + "url": "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/twigphp/Twig-extensions.git", + "reference": "f91a82ec225e5bb108e01a0f93c9be04f84dcfa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fabpot/Twig-extensions/zipball/v1.0.0", - "reference": "v1.0.0", + "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/f91a82ec225e5bb108e01a0f93c9be04f84dcfa0", + "reference": "f91a82ec225e5bb108e01a0f93c9be04f84dcfa0", "shasum": "" }, "require": { - "twig/twig": "1.*" + "twig/twig": "~1.0" }, "type": "library", "extra": { @@ -1115,20 +1422,20 @@ "i18n", "text" ], - "time": "2013-02-28 14:21:30" + "time": "2013-10-18 19:37:15" }, { "name": "twig/twig", - "version": "v1.13.1", + "version": "v1.16.3", "source": { "type": "git", - "url": "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/fabpot/Twig.git", - "reference": "v1.13.1" + "url": "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/twigphp/Twig.git", + "reference": "6dc11a1e8ecfc30e2c68aaeb218148409d8e68af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fabpot/Twig/zipball/v1.13.1", - "reference": "v1.13.1", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/6dc11a1e8ecfc30e2c68aaeb218148409d8e68af", + "reference": "6dc11a1e8ecfc30e2c68aaeb218148409d8e68af", "shasum": "" }, "require": { @@ -1137,7 +1444,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.16-dev" } }, "autoload": { @@ -1147,16 +1454,24 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3" + "BSD-3-Clause" ], "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com" + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", @@ -1164,7 +1479,7 @@ "keywords": [ "templating" ], - "time": "2013-06-06 06:06:01" + "time": "2014-12-25 19:58:19" } ], "packages-dev": [ @@ -1261,93 +1576,702 @@ "time": "2014-08-11 04:32:36" }, { - "name": "satooshi/php-coveralls", - "version": "dev-master", + "name": "pdepend/pdepend", + "version": "2.0.3", "source": { "type": "git", - "url": "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/satooshi/php-coveralls.git", - "reference": "94389a0ebdb64857d6899b5e0254dffa99e5aa96" + "url": "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/pdepend/pdepend.git", + "reference": "dc582a3c0180664a8fbfc5a34efaf4cc13fccc60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/94389a0ebdb64857d6899b5e0254dffa99e5aa96", - "reference": "94389a0ebdb64857d6899b5e0254dffa99e5aa96", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/dc582a3c0180664a8fbfc5a34efaf4cc13fccc60", + "reference": "dc582a3c0180664a8fbfc5a34efaf4cc13fccc60", "shasum": "" }, "require": { - "ext-json": "*", - "ext-simplexml": "*", - "guzzle/guzzle": ">=2.7", - "php": ">=5.3", - "psr/log": "1.0.0", - "symfony/config": ">=2.0", - "symfony/console": ">=2.0", - "symfony/stopwatch": ">=2.2", - "symfony/yaml": ">=2.0" + "symfony/config": "@stable", + "symfony/dependency-injection": "@stable", + "symfony/filesystem": "@stable" }, "require-dev": { - "apigen/apigen": "2.8.*@stable", - "pdepend/pdepend": "dev-master as 2.0.0", - "phpmd/phpmd": "dev-master", - "phpunit/php-invoker": ">=1.1.0,<1.2.0", - "phpunit/phpunit": "3.7.*@stable", - "sebastian/finder-facade": "dev-master", - "sebastian/phpcpd": "1.4.*@stable", - "squizlabs/php_codesniffer": "1.4.*@stable", - "theseer/fdomdocument": "dev-master" - }, - "suggest": { - "symfony/http-kernel": "Allows Symfony integration" + "phpunit/phpunit": "3.*@stable", + "squizlabs/php_codesniffer": "@stable" }, "bin": [ - "composer/bin/coveralls" + "src/bin/pdepend" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.7-dev" - } - }, "autoload": { "psr-0": { - "Satooshi\\Component": "src/", - "Satooshi\\Bundle": "src/" + "PDepend\\": "src/main/php/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "authors": [ - { - "name": "Kitamura Satoshi", - "email": "with.no.parachute@gmail.com", - "homepage": "https://www.facebook.com/satooshi.jp" + "description": "Official version of pdepend to be handled with Composer", + "time": "2014-10-08 06:54:50" + }, + { + "name": "phpmd/phpmd", + "version": "2.0.0", + "source": { + "type": "git", + "url": "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/phpmd/phpmd.git", + "reference": "68ced5452910d3555a38720bd87f5f2356c5a003" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/68ced5452910d3555a38720bd87f5f2356c5a003", + "reference": "68ced5452910d3555a38720bd87f5f2356c5a003", + "shasum": "" + }, + "require": { + "pdepend/pdepend": "2.0.*", + "php": ">=5.3.0", + "symfony/config": "@stable", + "symfony/dependency-injection": "@stable", + "symfony/filesystem": "@stable" + }, + "bin": [ + "src/bin/phpmd" + ], + "type": "library", + "autoload": { + "psr-0": { + "PHPMD\\": "src/main/php", + "PDepend\\": "vendor/pdepend/pdepend/src/main/php/" } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "../../pdepend/pdepend/src/main/php", + "src/main/php" ], - "description": "PHP client library for Coveralls API", - "homepage": "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/satooshi/php-coveralls", - "keywords": [ - "ci", - "coverage", - "github", - "test" + "license": [ + "BSD-3-Clause" ], - "time": "2014-07-09 10:45:38" - } - ], - "aliases": [ - + "description": "Official version of PHPMD handled with Composer.", + "time": "2014-05-21 12:45:23" + }, + { + "name": "phpunit/php-code-coverage", + "version": "1.2.18", + "source": { + "type": "git", + "url": "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/sebastianbergmann/php-code-coverage.git", + "reference": "fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b", + "reference": "fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": ">=1.3.0@stable", + "phpunit/php-text-template": ">=1.2.0@stable", + "phpunit/php-token-stream": ">=1.1.3,<1.3.0" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*@dev" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "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/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2014-09-02 10:13:14" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.3.4", + "source": { + "type": "git", + "url": "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/sebastianbergmann/php-file-iterator.git", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "File/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "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/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2013-10-10 15:34:57" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.0", + "source": { + "type": "git", + "url": "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/sebastianbergmann/php-text-template.git", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "Text/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "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/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2014-01-30 17:20:04" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.5", + "source": { + "type": "git", + "url": "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/sebastianbergmann/php-timer.git", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "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/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2013-08-02 07:42:54" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.2.2", + "source": { + "type": "git", + "url": "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/sebastianbergmann/php-token-stream.git", + "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", + "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "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/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2014-03-03 05:10:30" + }, + { + "name": "phpunit/phpunit", + "version": "3.7.38", + "source": { + "type": "git", + "url": "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/sebastianbergmann/phpunit.git", + "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/38709dc22d519a3d1be46849868aa2ddf822bcf6", + "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpunit/php-code-coverage": "~1.2", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.1", + "phpunit/php-timer": "~1.0", + "phpunit/phpunit-mock-objects": "~1.2", + "symfony/yaml": "~2.0" + }, + "require-dev": { + "pear-pear.php.net/pear": "1.9.4" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "composer/bin/phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "PHPUnit/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "", + "../../symfony/yaml/" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "http://www.phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2014-10-17 09:04:17" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "1.2.3", + "source": { + "type": "git", + "url": "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/sebastianbergmann/phpunit-mock-objects.git", + "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5794e3c5c5ba0fb037b11d8151add2a07fa82875", + "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-text-template": ">=1.1.1@stable" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "autoload": { + "classmap": [ + "PHPUnit/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "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/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2013-01-13 10:24:48" + }, + { + "name": "satooshi/php-coveralls", + "version": "dev-master", + "source": { + "type": "git", + "url": "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/satooshi/php-coveralls.git", + "reference": "2fbf803803d179ab1082807308a67bbd5a760c70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/2fbf803803d179ab1082807308a67bbd5a760c70", + "reference": "2fbf803803d179ab1082807308a67bbd5a760c70", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-simplexml": "*", + "guzzle/guzzle": ">=2.7", + "php": ">=5.3", + "psr/log": "1.0.0", + "symfony/config": ">=2.0", + "symfony/console": ">=2.0", + "symfony/stopwatch": ">=2.2", + "symfony/yaml": ">=2.0" + }, + "require-dev": { + "apigen/apigen": "2.8.*@stable", + "pdepend/pdepend": "dev-master as 2.0.0", + "phpmd/phpmd": "dev-master", + "phpunit/php-invoker": ">=1.1.0,<1.2.0", + "phpunit/phpunit": "3.7.*@stable", + "sebastian/finder-facade": "dev-master", + "sebastian/phpcpd": "1.4.*@stable", + "squizlabs/php_codesniffer": "1.4.*@stable", + "theseer/fdomdocument": "dev-master" + }, + "suggest": { + "symfony/http-kernel": "Allows Symfony integration" + }, + "bin": [ + "composer/bin/coveralls" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.7-dev" + } + }, + "autoload": { + "psr-0": { + "Satooshi\\Component": "src/", + "Satooshi\\Bundle": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kitamura Satoshi", + "email": "with.no.parachute@gmail.com", + "homepage": "https://www.facebook.com/satooshi.jp" + } + ], + "description": "PHP client library for Coveralls API", + "homepage": "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/satooshi/php-coveralls", + "keywords": [ + "ci", + "coverage", + "github", + "test" + ], + "time": "2014-11-11 15:35:34" + }, + { + "name": "sebastian/finder-facade", + "version": "1.1.0", + "source": { + "type": "git", + "url": "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/sebastianbergmann/finder-facade.git", + "reference": "1e396fda3449fce9df032749fa4fa2619e0347e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/1e396fda3449fce9df032749fa4fa2619e0347e0", + "reference": "1e396fda3449fce9df032749fa4fa2619e0347e0", + "shasum": "" + }, + "require": { + "symfony/finder": ">=2.2.0", + "theseer/fdomdocument": ">=1.3.1" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", + "homepage": "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/sebastianbergmann/finder-facade", + "time": "2013-05-28 06:10:03" + }, + { + "name": "sebastian/phpcpd", + "version": "2.0.1", + "source": { + "type": "git", + "url": "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/sebastianbergmann/phpcpd.git", + "reference": "a9462153f2dd90466a010179901d31fbff598365" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/a9462153f2dd90466a010179901d31fbff598365", + "reference": "a9462153f2dd90466a010179901d31fbff598365", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-timer": ">=1.0.4", + "sebastian/finder-facade": ">=1.1.0", + "sebastian/version": ">=1.0.3", + "symfony/console": ">=2.2.0", + "theseer/fdomdocument": "~1.4" + }, + "bin": [ + "phpcpd" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Copy/Paste Detector (CPD) for PHP code.", + "homepage": "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/sebastianbergmann/phpcpd", + "time": "2014-03-31 09:25:30" + }, + { + "name": "sebastian/version", + "version": "1.0.4", + "source": { + "type": "git", + "url": "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/sebastianbergmann/version.git", + "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/a77d9123f8e809db3fbdea15038c27a95da4058b", + "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "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/sebastianbergmann/version", + "time": "2014-12-15 14:25:24" + }, + { + "name": "theseer/fdomdocument", + "version": "1.6.0", + "source": { + "type": "git", + "url": "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/theseer/fDOMDocument.git", + "reference": "d08cf070350f884c63fc9078d27893c2ab6c7cef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/d08cf070350f884c63fc9078d27893c2ab6c7cef", + "reference": "d08cf070350f884c63fc9078d27893c2ab6c7cef", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "lib-libxml": "*", + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "lead" + } + ], + "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.", + "homepage": "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/theseer/fDOMDocument", + "time": "2014-09-13 10:57:19" + } ], + "aliases": [], "minimum-stability": "stable", "stability-flags": { "satooshi/php-coveralls": 20 }, "prefer-stable": false, + "prefer-lowest": false, "platform": { "php": ">=5.3.3" }, - "platform-dev": [ - - ] + "platform-dev": [] } From 1334b8782127819e13bd09e81cfaab022b95a7c5 Mon Sep 17 00:00:00 2001 From: Vasileios Georgitzikis Date: Fri, 9 Jan 2015 05:43:20 +0200 Subject: [PATCH 04/10] Suppressed Warning that breaks our JSON output If the object files dir wasn't opened, opendir echoes a Warning (probably depends on PHP settings), which would break our JSON. Fixed that --- .../src/Codebender/CompilerBundle/Handler/DeletionHandler.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php index 042d6c0..1a5cb82 100644 --- a/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php +++ b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php @@ -43,7 +43,7 @@ function deleteAllObjects(&$success, &$fileCount, &$deletionStats, &$undeletedFi "success_dot_LOCK" => 0, "failure_dot_LOCK" => 0); - if ($handle = opendir($this->object_directory)) + if ($handle = @opendir($this->object_directory)) { $success = true; @@ -80,7 +80,7 @@ function deleteSpecificObjects(&$success, &$response, &$option, &$to_delete) $response["deleted_files"] = ""; $response["undeleted_files"] = ""; - if ($handle = opendir($this->object_directory)) + if ($handle = @opendir($this->object_directory)) { while (false !== ($entry = readdir($handle))) { From 9af22c7bf7642ff56eb605aef267058c1ebea8c4 Mon Sep 17 00:00:00 2001 From: Vasileios Georgitzikis Date: Fri, 9 Jan 2015 05:47:18 +0200 Subject: [PATCH 05/10] Added EOF Newline --- .../src/Codebender/CompilerBundle/Handler/DeletionHandler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php index 1a5cb82..0a6600b 100644 --- a/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php +++ b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php @@ -105,4 +105,4 @@ function deleteSpecificObjects(&$success, &$response, &$option, &$to_delete) else $success = false; } -} \ No newline at end of file +} From 98dcec61aa12c12b8db2dde8ceffc2bc0ced57ed Mon Sep 17 00:00:00 2001 From: Fotis Papadopoulos Date: Fri, 17 Jul 2015 16:18:36 +0300 Subject: [PATCH 06/10] Code style changes in PreprocessingHandler - Added brackets to flow control statements - Replaced upper-case null with lower-case null --- .../Handler/PreprocessingHandler.php | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/Symfony/src/Codebender/CompilerBundle/Handler/PreprocessingHandler.php b/Symfony/src/Codebender/CompilerBundle/Handler/PreprocessingHandler.php index 1dac789..5d72597 100644 --- a/Symfony/src/Codebender/CompilerBundle/Handler/PreprocessingHandler.php +++ b/Symfony/src/Codebender/CompilerBundle/Handler/PreprocessingHandler.php @@ -249,7 +249,7 @@ function buildCode($code, $function_prototypes, $position) return $return_code; } - function convertInoToCpp($code, $filename = NULL) + function convertInoToCpp($code, $filename = null) { // Remove comments, preprocessor directives, single- and double- quotes $no_comms_code = $this->removeCommentsDirectivesQuotes($code); @@ -263,12 +263,12 @@ function convertInoToCpp($code, $filename = NULL) // before any function declaration) $insertion_position = $this->insertionPosition($code); - $new_code = ""; + $new_code = "#line 1\n"; // Add a preprocessor directive for line numbering. - if ($filename) - $new_code .= "#line 1 \"$filename\"\n"; - else - $new_code .= "#line 1\n"; + if ($filename) { + $new_code .= "#line 1 \"$filename\"\n"; + } + // Build the new code for the cpp file that will eventually be compiled $new_code .= $this->buildCode($code, $function_prototypes, $insertion_position); @@ -281,15 +281,15 @@ function convertInoToCpp($code, $filename = NULL) * \brief Decodes and performs validation checks on input data. * * \param string $request The JSON-encoded compile request. - * \return The value encoded in JSON in appropriate PHP type or NULL. + * \return The value encoded in JSON in appropriate PHP type or null. */ function validateInput($request) { $request = json_decode($request, true); // Request must be successfully decoded. - if ($request === NULL) - return NULL; + if ($request === null) + return null; // Request must contain certain entities. if (!(array_key_exists("format", $request) && array_key_exists("version", $request) @@ -302,23 +302,26 @@ function validateInput($request) && array_key_exists("core", $request["build"]) && is_array($request["files"])) ) - return NULL; + return null; // Leonardo-specific flags. if (array_key_exists("variant", $request["build"]) && $request["build"]["variant"] == "leonardo") if (!(array_key_exists("vid", $request["build"]) && array_key_exists("pid", $request["build"])) ) - return NULL; + return null; // Values used as command-line arguments may not contain any special // characters. This is a serious security risk. $values = array("version", "mcu", "f_cpu", "core", "vid", "pid"); - if (array_key_exists("variant", $request["build"])) - $values[] = "variant"; - foreach ($values as $i) - if (isset($request["build"][$i]) && escapeshellcmd($request["build"][$i]) != $request["build"][$i]) - return NULL; + if (array_key_exists("variant", $request["build"])) { + $values[] = "variant"; + } + foreach ($values as $i) { + if (isset($request["build"][$i]) && escapeshellcmd($request["build"][$i]) != $request["build"][$i]) { + return null; + } + } // Request is valid. return $request; From 46dfc7ce38465c2f827cd762912a67270afe3bd7 Mon Sep 17 00:00:00 2001 From: Fotis Papadopoulos Date: Fri, 17 Jul 2015 16:22:10 +0300 Subject: [PATCH 07/10] CamelCased a bunch of variables in the UtilityHandler --- .../CompilerBundle/Handler/UtilityHandler.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Symfony/src/Codebender/CompilerBundle/Handler/UtilityHandler.php b/Symfony/src/Codebender/CompilerBundle/Handler/UtilityHandler.php index 33ba5ed..f674b6e 100644 --- a/Symfony/src/Codebender/CompilerBundle/Handler/UtilityHandler.php +++ b/Symfony/src/Codebender/CompilerBundle/Handler/UtilityHandler.php @@ -36,17 +36,17 @@ function extractFiles($directory, $request_files, $lib_extraction) // separated by "|" to be used in regular expressions. They are also // used as keys in an array that will contain the paths of all the // extracted files. - $EXTENSIONS = array("c", "cpp", "h", "inc", "ino", "o", "S"); + $allowedExtensions = array("c", "cpp", "h", "inc", "ino", "o", "S"); $files = array(); - foreach ($EXTENSIONS as $ext) + foreach ($allowedExtensions as $ext) $files[$ext] = array(); - $EXTENSIONS = implode("|", $EXTENSIONS); + $allowedExtensions = implode("|", $allowedExtensions); // Matches filename that end with an appropriate extension. The name // without the extension is stored in registerd 1, the extension itself // in register 2. // // Examples: foo.c bar.cpp - $REGEX = "/(.*)\.($EXTENSIONS)$/"; + $extensionsRegex = "/(.*)\.($allowedExtensions)$/"; if (!file_exists($directory)) mkdir($directory, 0777, true); @@ -57,7 +57,7 @@ function extractFiles($directory, $request_files, $lib_extraction) $content = $file["content"]; $ignore = false; - $failure_response = array( + $failureResponse = array( "success" => false, "step" => 1, "message" => "Failed to extract file '$filename'."); @@ -66,7 +66,7 @@ function extractFiles($directory, $request_files, $lib_extraction) // serious security risk. $directories = explode("/", "$directory/$filename"); if (in_array("..", $directories)) - return $failure_response; + return $failureResponse; if (strpos($filename, DIRECTORY_SEPARATOR)) { @@ -84,12 +84,12 @@ function extractFiles($directory, $request_files, $lib_extraction) } if (file_put_contents("$directory/$filename", $content) === false) - return $failure_response; + return $failureResponse; if ($ignore) continue; - if (preg_match($REGEX, $filename, $matches)) + if (preg_match($extensionsRegex, $filename, $matches)) $files[$matches[2]][] = "$directory/$matches[1]"; else error_log(__FUNCTION__."(): Unhandled file extension '$filename'"); From 9b467bb7bd5d1c8c9a547180b3f392cdea25c655 Mon Sep 17 00:00:00 2001 From: Fotis Papadopoulos Date: Fri, 24 Jul 2015 12:12:23 +0300 Subject: [PATCH 08/10] Updated the code of the deletion actions and handler methods - Removed variables passed by reference, made all methods return from a single point - camelCased variables, except for $auth_key, which is already changed on the master branch. - Made braces follow PSR-2 - Removed unnecessary else statements - Changed all double quotes to single quotes in strings --- .../Controller/DefaultController.php | 82 +++++++---- .../Handler/DeletionHandler.php | 136 +++++++++--------- .../Resources/config/routing.yml | 2 +- 3 files changed, 125 insertions(+), 95 deletions(-) diff --git a/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php b/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php index 4bce790..f419773 100644 --- a/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php +++ b/Symfony/src/Codebender/CompilerBundle/Controller/DefaultController.php @@ -73,54 +73,76 @@ public function indexAction($auth_key, $version) public function deleteAllObjectsAction($auth_key, $version) { - if ($this->container->getParameter('auth_key') != $auth_key) - return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Invalid authorization key."))); - - if ($version != "v1") - return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Invalid API version."))); + if ($this->container->getParameter('auth_key') != $auth_key) { + return new Response(json_encode( + array('success' => false, 'step' => 0, 'message' => 'Invalid authorization key.') + )); + } + + if ($version != 'v1') { + return new Response(json_encode( + array('success' => false, 'step' => 0, 'message' => 'Invalid API version.') + )); + } //Get the compiler service /** @var DeletionHandler $deleter */ $deleter = $this->get('deletion_handler'); - $deleter->deleteAllObjects($success, $fileCount, $deletionStats, $undeletedFiles); - - if ($success === false) - return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Failed to access object files directory."))); - else - return new Response(json_encode(array_merge(array("success" => true, - "message" => "Object files deletion complete. Found $fileCount files."), - $deletionStats, - array("Files not deleted" => $undeletedFiles)))); + $response = $deleter->deleteAllObjects(); + + if ($response['success'] === false) { + return new Response(json_encode( + array('success' => false, 'step' => 0, 'message' => 'Failed to access object files directory.') + )); + } + + return new Response(json_encode( + array_merge( + array( + 'success' => true, + 'message' => 'Object files deletion complete. Found ' . $response['fileCount'] . ' files.' + ), + $response['deletionStats'], + array("Files not deleted" => $response['notDeletedFiles']) + ))); } - public function deleteSpecificObjectsAction($auth_key, $version, $option, $to_delete) + public function deleteSpecificObjectsAction($auth_key, $version, $option, $cachedObjectToDelete) { - if ($this->container->getParameter('auth_key') != $auth_key) - return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Invalid authorization key."))); - - if ($version != "v1") - return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Invalid API version."))); + if ($this->container->getParameter('auth_key') != $auth_key) { + return new Response(json_encode( + array('success' => false, 'step' => 0, 'message' => 'Invalid authorization key.') + )); + } + + if ($version != 'v1') { + return new Response(json_encode( + array('success' => false, 'step' => 0, 'message' => 'Invalid API version.') + )); + } //Get the compiler service /** @var DeletionHandler $deleter */ $deleter = $this->get('deletion_handler'); - $deleter->deleteSpecificObjects($success, $response, $option, $to_delete); + $response = $deleter->deleteSpecificObjects($option, $cachedObjectToDelete); - if ($success === false) - { - return new Response(json_encode(array("success" => false, "step" => 0, "message" => "Failed to access object files directory."))); + if ($response['success'] === false) { + return new Response(json_encode( + array('success' => false, 'step' => 0, 'message' => 'Failed to access object files directory.') + )); } - if ($response["undeleted_files"] != "") - { - $message = ($option == "library") ? "Failed to delete one or more of the specified library object files." : "Failed to delete one or more of the specified core object files."; - return new Response(json_encode(array_merge(array("success" => false, "step" => 0, "message" => $message), $response))); + if ($response["notDeletedFiles"] != '') { + $message = ($option == 'library') ? 'Failed to delete one or more of the specified library object files.' : 'Failed to delete one or more of the specified core object files.'; + return new Response(json_encode( + array_merge(array('success' => false, 'step' => 0, 'message' => $message), $response) + )); } - $message = ($option == "library") ? "Library deleted successfully." : "Core object files deleted successfully."; - return new Response(json_encode(array_merge(array("success" => true, "message" => $message), $response))); + $message = ($option == 'library') ? 'Library deleted successfully.' : 'Core object files deleted successfully.'; + return new Response(json_encode(array_merge(array('success' => true, 'message' => $message), $response))); } /** diff --git a/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php index 0a6600b..83cfd0c 100644 --- a/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php +++ b/Symfony/src/Codebender/CompilerBundle/Handler/DeletionHandler.php @@ -16,93 +16,101 @@ namespace Codebender\CompilerBundle\Handler; -use Symfony\Bridge\Monolog\Logger; - class DeletionHandler { - private $compiler_logger; - private $object_directory; + private $objectCacheDirectory; - function __construct(Logger $logger, $objdir) + function __construct($objectFilesDirectory) { - $this->compiler_logger = $logger; - $this->object_directory = $objdir; + $this->$objectCacheDirectory = $objectFilesDirectory; } - function deleteAllObjects(&$success, &$fileCount, &$deletionStats, &$undeletedFiles) + function deleteAllObjects() { - $success = false; $fileCount = 0; - $undeletedFiles = ""; - $deletionStats = array("success_dot_a" => 0, - "failure_dot_a" => 0, - "success_dot_o" => 0, - "failure_dot_o" => 0, - "success_dot_d" => 0, - "failure_dot_d" => 0, - "success_dot_LOCK" => 0, - "failure_dot_LOCK" => 0); - - if ($handle = @opendir($this->object_directory)) - { - $success = true; - - while (false !== ($entry = readdir($handle))) - { - if ($entry != "." && $entry != ".." && $entry != ".DS_Store") - { - $fileCount++; - $extension = pathinfo($entry, PATHINFO_EXTENSION); - - if (!in_array($extension, array("a", "o", "d", "LOCK"))) - continue; - - if (@unlink($this->object_directory."/$entry") === false) - { - $deletionStats["failure_dot_$extension"]++; - $undeletedFiles .= $entry."\n"; - } - else - $deletionStats["success_dot_$extension"]++; - } + $notDeletedFiles = ''; + $deletionStats = array('success_dot_a' => 0, + 'failure_dot_a' => 0, + 'success_dot_o' => 0, + 'failure_dot_o' => 0, + 'success_dot_d' => 0, + 'failure_dot_d' => 0, + 'success_dot_LOCK' => 0, + 'failure_dot_LOCK' => 0); + + if ($handle = @opendir($this->$objectCacheDirectory)) { + + while (false !== ($entry = readdir($handle))) { + if ($entry == '.' || $entry == '..' || $entry != '.DS_Store') { + continue; + } + $fileCount++; + $extension = pathinfo($entry, PATHINFO_EXTENSION); + + if (!in_array($extension, array('a', 'o', 'd', 'LOCK'))) { + continue; + } + + if (@unlink($this->$objectCacheDirectory . '/' . $entry) === false) { + $deletionStats['failure_dot_$extension']++; + $notDeletedFiles .= $entry . "\n"; + continue; + } + + $deletionStats['success_dot_' . $extension]++; } closedir($handle); + + return array( + 'success' => true, + 'fileCount' => $fileCount, + 'notDeletedFiles' => $notDeletedFiles, + 'deletionStats' => $deletionStats + ); } + + return array('success' => false); } - function deleteSpecificObjects(&$success, &$response, &$option, &$to_delete) + function deleteSpecificObjects($option, $cachedObjectToDelete) { - if ($option == "core") - $to_delete = str_replace(":", "_", $to_delete); + if ($option == 'core') { + $cachedObjectToDelete = str_replace(':', '_', $cachedObjectToDelete); + } + + $deletedFiles = ''; + $notDeletedFiles = ''; - $success = true; - $response = array(); - $response["deleted_files"] = ""; - $response["undeleted_files"] = ""; + if ($handle = @opendir($this->$objectCacheDirectory)) { - if ($handle = @opendir($this->object_directory)) - { - while (false !== ($entry = readdir($handle))) - { - if ($entry == "." || $entry == ".." || $entry == ".DS_Store") - continue; + while (false !== ($entry = readdir($handle))) { - if ($option == "library" && strpos($entry, "______".$to_delete."_______") === false) - continue; + if ($entry == '.' || $entry == '..' || $entry == '.DS_Store') { + continue; + } - if ($option == "core" && strpos($entry, "_".$to_delete."_") === false) - continue; + if ($option == 'library' && strpos($entry, '______' . $cachedObjectToDelete . '_______') === false) { + continue; + } + if ($option == 'core' && strpos($entry, '_' . $cachedObjectToDelete . '_') === false) { + continue; + } - if (@unlink($this->object_directory."/$entry") === false) - $response["undeleted_files"] .= $entry."\n"; - else - $response["deleted_files"] .= $entry."\n"; + + if (@unlink($this->$objectCacheDirectory . '/' . $entry) === false) { + $notDeletedFiles .= $entry."\n"; + continue; + } + + $deletedFiles .= $entry . "\n"; } closedir($handle); + + return array('success' => true, 'deletedFiles' => $deletedFiles, 'notDeletedFiles' => $notDeletedFiles); } - else - $success = false; + + return array('success' => false); } } diff --git a/Symfony/src/Codebender/CompilerBundle/Resources/config/routing.yml b/Symfony/src/Codebender/CompilerBundle/Resources/config/routing.yml index 0accf8d..02e7c1f 100644 --- a/Symfony/src/Codebender/CompilerBundle/Resources/config/routing.yml +++ b/Symfony/src/Codebender/CompilerBundle/Resources/config/routing.yml @@ -15,5 +15,5 @@ codebender_compiler_delete_all: defaults: { _controller: CodebenderCompilerBundle:Default:deleteAllObjects } codebender_compiler_delete_specific: - pattern: /{auth_key}/{version}/delete/{option}/{to_delete} + pattern: /{auth_key}/{version}/delete/{option}/{cachedObjectToDelete} defaults: { _controller: CodebenderCompilerBundle:Default:deleteSpecificObjects } From 756fce47415fd36e771c9d47234251255e55121b Mon Sep 17 00:00:00 2001 From: Fotis Papadopoulos Date: Fri, 24 Jul 2015 13:32:31 +0300 Subject: [PATCH 09/10] Removed update coveralls statement (it's already installed along with Symfony by composer) --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 301539f..9f4a7c7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,6 @@ script: - ../scripts/run_tests.sh after_script: - - php composer.phar update satooshi/php-coveralls --dev - php bin/coveralls -v notifications: From b05358d24f69129d0a5d48fb2f5632b68430dc73 Mon Sep 17 00:00:00 2001 From: Fotis Papadopoulos Date: Fri, 24 Jul 2015 13:38:43 +0300 Subject: [PATCH 10/10] Silenced arduino core file unzipping (produces more than 7K lines of unnecessary logs) --- scripts/install_dependencies.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install_dependencies.sh b/scripts/install_dependencies.sh index 4486d0e..db15079 100755 --- a/scripts/install_dependencies.sh +++ b/scripts/install_dependencies.sh @@ -2,10 +2,10 @@ sudo apt-get install -y unzip cd ~ wget https://github.com/codebendercc/arduino-core-files/archive/master.zip -unzip master.zip +unzip -q master.zip sudo cp -r arduino-core-files-master /opt/codebender/codebender-arduino-core-files rm master.zip wget https://github.com/codebendercc/external_cores/archive/master.zip -unzip master.zip +unzip -q master.zip sudo cp -r external_cores-master /opt/codebender/external-core-files cd - \ No newline at end of file