/** * 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>'); }
/** * 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()); } }