Example #1
0
 /**
  * Displays a list of all extensions not present in the project composer.json.
  *
  * Did you add a module without using composer, and it has a composer.json
  * file? It will show up in this list.
  *
  * @param Event $event
  *   Script event provided by Composer.
  */
 public static function listUnmanagedExtensions(Event $event)
 {
     $root_dir = static::getRootDir();
     $finder = new ComposerFinder();
     $unmanaged_extensions = $finder->getUnmanagedComposerExtensions($root_dir, $event->getComposer());
     $extensions = [];
     foreach ($unmanaged_extensions as $unmanaged_extension) {
         $extensions[] = $unmanaged_extension->getName();
     }
     $event->getIO()->write(' Unmanaged extensions with composer.json files: <info>' . implode(', ', $extensions) . '</info>');
 }
 /**
  * @dataProvider provideModuleFilesystem
  */
 public function testGetComposerExtensions($expected_composer_count, $filesystem)
 {
     // Set up the filesystem.
     $root = vfsStream::setup('test', NULL, $filesystem);
     $finder = new ComposerFinder();
     $extensions = $finder->getComposerExtensions(vfsStream::url('test'), FALSE);
     // Make sure we got the right number of results.
     $this->assertEquals($expected_composer_count, count($extensions));
     // Check for expected modules.
     $modules = ['deps', 'site_deps'];
     foreach ($modules as $module) {
         $this->assertArrayHasKey($module, $extensions);
     }
 }
 /**
  * Perform the merge for Drupal extensions.
  *
  * Given a root directory for the Drupal installation and a Composer package
  * representing the root installation, merge composer.json files from
  * discovered extensions/modules.
  *
  * @param string $root_dir
  *   Root directory of the Drupal installation. Usually this is the same as
  *   the directory where the composer.json file lives, but it might not be.
  * @param \Composer\Composer $composer
  *   The Composer object.
  */
 protected function mergeExtensionDependenciesForRoot($root_dir, Composer $composer)
 {
     // Glean the root package.
     $root_package = $composer->getPackage();
     $finder = new ComposerFinder();
     $unmanaged_dependencies = $finder->getUnmanagedComposerExtensions($root_dir, $composer);
     foreach ($unmanaged_dependencies as $dependency) {
         $this->mergeFile($root_package, $dependency->getComposerJsonFile()->getPath());
     }
 }