diff --git a/composer.json b/composer.json index 727e031..c4bb1e3 100644 --- a/composer.json +++ b/composer.json @@ -27,6 +27,7 @@ ], "recurse": false, "replace": false, + "merge-dev": true, "merge-extra": false } }, @@ -37,7 +38,10 @@ }, "scripts": { "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump", - "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess", + "post-autoload-dump": [ + "Drupal\\Core\\Composer\\Composer::ensureHtaccess", + "Drupal\\Core\\Composer\\Composer::configurePhpcs" + ], "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup", "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup" } diff --git a/composer.lock b/composer.lock index e86554f..7d130ed 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "7d101b08e5ae002d827cd42ae9a4e344", - "content-hash": "60f7057617c6d995bf9946d0b12f0b5d", + "hash": "5730b38c5e8cb0c413ccf8faaa695dc9", + "content-hash": "3993173afe552cb90686d8dfa7d7f596", "packages": [ { "name": "composer/installers", @@ -2938,6 +2938,42 @@ "time": "2015-06-14 21:17:01" }, { + "name": "drupal/coder", + "version": "8.2.7", + "source": { + "type": "git", + "url": "https://github.com/klausi/coder.git", + "reference": "a5b5f6b5769393a016da0d106a3b33f932c73331" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/klausi/coder/zipball/a5b5f6b5769393a016da0d106a3b33f932c73331", + "reference": "a5b5f6b5769393a016da0d106a3b33f932c73331", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "squizlabs/php_codesniffer": ">=2.5.1", + "symfony/yaml": ">=2.0.0" + }, + "require-dev": { + "phpunit/phpunit": ">=3.7" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "description": "Coder is a library to review Drupal code.", + "homepage": "https://www.drupal.org/project/coder", + "keywords": [ + "code review", + "phpcs", + "standards" + ], + "time": "2016-03-27 09:53:21" + }, + { "name": "fabpot/goutte", "version": "v3.1.2", "source": { @@ -3999,6 +4035,84 @@ "time": "2015-06-21 13:59:46" }, { + "name": "squizlabs/php_codesniffer", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "fb72ed32f8418db5e7770be1653e62e0d6f5dd3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/fb72ed32f8418db5e7770be1653e62e0d6f5dd3d", + "reference": "fb72ed32f8418db5e7770be1653e62e0d6f5dd3d", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "bin": [ + "scripts/phpcs", + "scripts/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "classmap": [ + "CodeSniffer.php", + "CodeSniffer/CLI.php", + "CodeSniffer/Exception.php", + "CodeSniffer/File.php", + "CodeSniffer/Fixer.php", + "CodeSniffer/Report.php", + "CodeSniffer/Reporting.php", + "CodeSniffer/Sniff.php", + "CodeSniffer/Tokens.php", + "CodeSniffer/Reports/", + "CodeSniffer/Tokenizers/", + "CodeSniffer/DocGenerators/", + "CodeSniffer/Standards/AbstractPatternSniff.php", + "CodeSniffer/Standards/AbstractScopeSniff.php", + "CodeSniffer/Standards/AbstractVariableSniff.php", + "CodeSniffer/Standards/IncorrectPatternException.php", + "CodeSniffer/Standards/Generic/Sniffs/", + "CodeSniffer/Standards/MySource/Sniffs/", + "CodeSniffer/Standards/PEAR/Sniffs/", + "CodeSniffer/Standards/PSR1/Sniffs/", + "CodeSniffer/Standards/PSR2/Sniffs/", + "CodeSniffer/Standards/Squiz/Sniffs/", + "CodeSniffer/Standards/Zend/Sniffs/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2016-05-30 22:24:32" + }, + { "name": "symfony/browser-kit", "version": "v2.7.6", "source": { diff --git a/core/composer.json b/core/composer.json index ddcd1ce..2efa374 100644 --- a/core/composer.json +++ b/core/composer.json @@ -36,10 +36,12 @@ "require-dev": { "behat/mink": "~1.7", "behat/mink-goutte-driver": "~1.2", + "drupal/coder": "~8.2", "jcalderonzumba/gastonjs": "~1.0.2", "jcalderonzumba/mink-phantomjs-driver": "~0.3.1", "mikey179/vfsStream": "~1.2", "phpunit/phpunit": "~4.8", + "squizlabs/php_codesniffer": "~2", "symfony/css-selector": "~2.8" }, "replace": { @@ -157,6 +159,9 @@ }, "scripts": { "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump", - "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess" + "post-autoload-dump": [ + "Drupal\\Core\\Composer\\Composer::ensureHtaccess", + "Drupal\\Core\\Composer\\Composer::configurePhpcs" + ] } } diff --git a/core/lib/Drupal/Core/Composer/Composer.php b/core/lib/Drupal/Core/Composer/Composer.php index 51a4917..2954d16 100644 --- a/core/lib/Drupal/Core/Composer/Composer.php +++ b/core/lib/Drupal/Core/Composer/Composer.php @@ -136,6 +136,31 @@ public static function ensureHtaccess(Event $event) { } /** + * Configures phpcs if present. + * + * @param \Composer\Script\Event $event + */ + public static function configurePhpcs(Event $event) { + // Grab the local repo which tells us what's been installed. + $local_repository = $event->getComposer() + ->getRepositoryManager() + ->getLocalRepository(); + // Make sure both phpcs and coder are installed. + $phpcs_package = $local_repository->findPackage('squizlabs/php_codesniffer', '*'); + $coder_package = $local_repository->findPackage('drupal/coder', '*'); + if (!empty($phpcs_package) && !empty($coder_package)) { + // Set phpcs' installed_paths config to point to our coder_sniffer + // directory. + $config = $event->getComposer()->getConfig(); + $bin_dir = $config->get('bin-dir'); + $vendor_dir = $config->get('vendor-dir'); + $command = $bin_dir . '/phpcs --config-set installed_paths ' . + $vendor_dir . '/drupal/coder/coder_sniffer'; + exec($command); + } + } + + /** * Remove possibly problematic test files from vendored projects. * * @param \Composer\Installer\PackageEvent $event