diff --git a/dev/tools/Magento/Tools/Console/Command/AbstractDependenciesCommand.php b/dev/tools/Magento/Tools/Console/Command/AbstractDependenciesCommand.php new file mode 100644 index 0000000000000000000000000000000000000000..da55debb00b5492d1247a837412de4392bbb00d9 --- /dev/null +++ b/dev/tools/Magento/Tools/Console/Command/AbstractDependenciesCommand.php @@ -0,0 +1,62 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Tools\Console\Command; + +use Magento\Framework\App\Utility\Files; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +abstract class AbstractDependenciesCommand extends Command +{ + /** + * Input key for directory option + */ + const INPUT_KEY_DIRECTORY = 'directory'; + + /** + * {@inheritdoc} + */ + protected function configure() + { + $this->setDefinition([ + new InputOption( + self::INPUT_KEY_DIRECTORY, + 'd', + InputOption::VALUE_REQUIRED, + 'Path to base directory for parsing', + BP + ) + ] + ); + parent::configure(); + } + + /** + * Build dependencies report + * + * @return void + */ + abstract protected function buildReport(); + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + try { + Files::setInstance(new \Magento\Framework\App\Utility\Files($input->getOption(self::INPUT_KEY_DIRECTORY))); + $this->buildReport(); + $output->writeln('<info>Report successfully processed.</info>'); + } catch (\Exception $e) { + $output->writeln( + '<error>Please, check passed path. Dependencies report generator failed: ' . + $e->getMessage() . '</error>' + ); + } + } +} diff --git a/dev/tools/Magento/Tools/Console/Command/DependenciesShowFrameworkCommand.php b/dev/tools/Magento/Tools/Console/Command/DependenciesShowFrameworkCommand.php new file mode 100644 index 0000000000000000000000000000000000000000..9dc7ff43f46139e4435593675b4a498635ff3914 --- /dev/null +++ b/dev/tools/Magento/Tools/Console/Command/DependenciesShowFrameworkCommand.php @@ -0,0 +1,47 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Tools\Console\Command; + +use Magento\Framework\App\Utility\Files; +use Magento\Tools\Dependency\ServiceLocator; + +/** + * Command for showing numbers of dependencies on Magento Framework + */ +class DependenciesShowFrameworkCommand extends AbstractDependenciesCommand +{ + /** + * {@inheritdoc} + */ + protected function configure() + { + $this->setDescription('Shows number of dependencies on Magento framework') + ->setName('info:dependencies:show-framework'); + parent::configure(); + } + + /** + * Build Framework dependencies report + * + * @return void + */ + protected function buildReport() + { + $filesForParse = Files::init()->getFiles([Files::init()->getPathToSource() . '/app/code/Magento'], '*'); + $configFiles = Files::init()->getConfigFiles('module.xml', [], false); + + ServiceLocator::getFrameworkDependenciesReportBuilder()->build( + [ + 'parse' => [ + 'files_for_parse' => $filesForParse, + 'config_files' => $configFiles, + 'declared_namespaces' => Files::init()->getNamespaces(), + ], + 'write' => ['report_filename' => 'framework-dependencies.csv'], + ] + ); + } +} diff --git a/dev/tools/Magento/Tools/Console/Command/DependenciesShowModulesCircularCommand.php b/dev/tools/Magento/Tools/Console/Command/DependenciesShowModulesCircularCommand.php new file mode 100644 index 0000000000000000000000000000000000000000..10ac41906e4b14c93903296f271752cfc336746d --- /dev/null +++ b/dev/tools/Magento/Tools/Console/Command/DependenciesShowModulesCircularCommand.php @@ -0,0 +1,42 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Tools\Console\Command; + +use Magento\Framework\App\Utility\Files; +use Magento\Tools\Dependency\ServiceLocator; + +/** + * Command for showing number of circular dependencies between modules + */ +class DependenciesShowModulesCircularCommand extends AbstractDependenciesCommand +{ + /** + * {@inheritdoc} + */ + protected function configure() + { + $this->setDescription('Shows number of circular dependencies between modules') + ->setName('info:dependencies:show-modules-circular'); + parent::configure(); + } + + /** + * Build circular dependencies between modules report + * + * @return void + */ + protected function buildReport() + { + $filesForParse = Files::init()->getComposerFiles('code', false); + + ServiceLocator::getCircularDependenciesReportBuilder()->build( + [ + 'parse' => ['files_for_parse' => $filesForParse], + 'write' => ['report_filename' => 'modules-circular-dependencies.csv'], + ] + ); + } +} diff --git a/dev/tools/Magento/Tools/Console/Command/DependenciesShowModulesCommand.php b/dev/tools/Magento/Tools/Console/Command/DependenciesShowModulesCommand.php new file mode 100644 index 0000000000000000000000000000000000000000..838327d0d4788f1197236f0eb92f271b2d8fd774 --- /dev/null +++ b/dev/tools/Magento/Tools/Console/Command/DependenciesShowModulesCommand.php @@ -0,0 +1,42 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Tools\Console\Command; + +use Magento\Framework\App\Utility\Files; +use Magento\Tools\Dependency\ServiceLocator; + +/** + * Command for showing number of dependencies between modules + */ +class DependenciesShowModulesCommand extends AbstractDependenciesCommand +{ + /** + * {@inheritdoc} + */ + protected function configure() + { + $this->setDescription('Shows number of dependencies between modules') + ->setName('info:dependencies:show-modules'); + parent::configure(); + } + + /** + * Build circular dependencies between modules report + * + * @return void + */ + protected function buildReport() + { + $filesForParse = Files::init()->getComposerFiles('code', false); + + ServiceLocator::getDependenciesReportBuilder()->build( + [ + 'parse' => ['files_for_parse' => $filesForParse], + 'write' => ['report_filename' => 'modules-dependencies.csv'], + ] + ); + } +} diff --git a/dev/tools/Magento/Tools/Console/CommandList.php b/dev/tools/Magento/Tools/Console/CommandList.php index a25d185b58c09dfa1aad3f668260a9c1cc866320..1b2f2b8dab905377fee4e9def77a9fdfb21e8e31 100644 --- a/dev/tools/Magento/Tools/Console/CommandList.php +++ b/dev/tools/Magento/Tools/Console/CommandList.php @@ -20,7 +20,11 @@ class CommandList */ protected function getCommandsClasses() { - return []; + return [ + 'Magento\Tools\Console\Command\DependenciesShowFrameworkCommand', + 'Magento\Tools\Console\Command\DependenciesShowModulesCircularCommand', + 'Magento\Tools\Console\Command\DependenciesShowModulesCommand', + ]; } /** diff --git a/dev/tools/Magento/Tools/Dependency/generate/bootstrap.php b/dev/tools/Magento/Tools/Dependency/generate/bootstrap.php deleted file mode 100644 index ead28a5725181692911ca9ce0740b7069432a4bc..0000000000000000000000000000000000000000 --- a/dev/tools/Magento/Tools/Dependency/generate/bootstrap.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -require_once __DIR__ . '/../../../../../../app/autoload.php'; diff --git a/dev/tools/Magento/Tools/Dependency/generate/framework-dependencies.php b/dev/tools/Magento/Tools/Dependency/generate/framework-dependencies.php deleted file mode 100644 index ebdc4e125677e366c56bc07bd872f364fcf05d18..0000000000000000000000000000000000000000 --- a/dev/tools/Magento/Tools/Dependency/generate/framework-dependencies.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -require_once __DIR__ . '/bootstrap.php'; -use Magento\Framework\App\Utility\Files; -use Magento\Tools\Dependency\ServiceLocator; - -try { - $console = new \Zend_Console_Getopt(['directory|d=s' => 'Path to base directory for parsing']); - $console->parse(); - - $directory = $console->getOption('directory') ?: BP; - - Files::setInstance(new \Magento\Framework\App\Utility\Files($directory)); - $filesForParse = Files::init()->getFiles([Files::init()->getPathToSource() . '/app/code/Magento'], '*'); - $configFiles = Files::init()->getConfigFiles('module.xml', [], false); - - ServiceLocator::getFrameworkDependenciesReportBuilder()->build( - [ - 'parse' => [ - 'files_for_parse' => $filesForParse, - 'config_files' => $configFiles, - 'declared_namespaces' => Files::init()->getNamespaces(), - ], - 'write' => ['report_filename' => 'framework-dependencies.csv'], - ] - ); - - fwrite(STDOUT, PHP_EOL . 'Report successfully processed.' . PHP_EOL); -} catch (\Zend_Console_Getopt_Exception $e) { - fwrite(STDERR, $e->getUsageMessage() . PHP_EOL); - exit(1); -} catch (\Exception $e) { - fwrite(STDERR, 'Please, check passed path. Dependencies report generator failed: ' . $e->getMessage() . PHP_EOL); - exit(1); -} diff --git a/dev/tools/Magento/Tools/Dependency/generate/modules-circular-dependencies.php b/dev/tools/Magento/Tools/Dependency/generate/modules-circular-dependencies.php deleted file mode 100644 index ed5869bd2b0a3ae68612bd042aae0d1002e9a623..0000000000000000000000000000000000000000 --- a/dev/tools/Magento/Tools/Dependency/generate/modules-circular-dependencies.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -require_once __DIR__ . '/bootstrap.php'; -use Magento\Framework\App\Utility\Files; -use Magento\Tools\Dependency\ServiceLocator; - -try { - $console = new \Zend_Console_Getopt(['directory|d=s' => 'Path to base directory for parsing']); - $console->parse(); - - $directory = $console->getOption('directory') ?: BP; - - Files::setInstance(new \Magento\Framework\App\Utility\Files($directory)); - $filesForParse = Files::init()->getComposerFiles('code', false); - - ServiceLocator::getCircularDependenciesReportBuilder()->build( - [ - 'parse' => ['files_for_parse' => $filesForParse], - 'write' => ['report_filename' => 'modules-circular-dependencies.csv'], - ] - ); - - fwrite(STDOUT, PHP_EOL . 'Report successfully processed.' . PHP_EOL); -} catch (\Zend_Console_Getopt_Exception $e) { - fwrite(STDERR, $e->getUsageMessage() . PHP_EOL); - exit(1); -} catch (\Exception $e) { - fwrite(STDERR, 'Please, check passed path. Dependencies report generator failed: ' . $e->getMessage() . PHP_EOL); - exit(1); -} diff --git a/dev/tools/Magento/Tools/Dependency/generate/modules-dependencies.php b/dev/tools/Magento/Tools/Dependency/generate/modules-dependencies.php deleted file mode 100644 index b32dadf099e89dc7163f48d7e9e0f8aa2a6ab3e8..0000000000000000000000000000000000000000 --- a/dev/tools/Magento/Tools/Dependency/generate/modules-dependencies.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -require_once __DIR__ . '/bootstrap.php'; - -use Magento\Framework\App\Utility\Files; -use Magento\Tools\Dependency\ServiceLocator; - -try { - $console = new \Zend_Console_Getopt(['directory|d=s' => 'Path to base directory for parsing']); - $console->parse(); - - $directory = $console->getOption('directory') ?: BP; - - Files::setInstance(new \Magento\Framework\App\Utility\Files($directory)); - $filesForParse = Files::init()->getComposerFiles('code', false); - - ServiceLocator::getDependenciesReportBuilder()->build( - [ - 'parse' => ['files_for_parse' => $filesForParse], - 'write' => ['report_filename' => 'modules-dependencies.csv'], - ] - ); - - fwrite(STDOUT, PHP_EOL . 'Report successfully processed.' . PHP_EOL); -} catch (\Zend_Console_Getopt_Exception $e) { - fwrite(STDERR, $e->getUsageMessage() . PHP_EOL); - exit(1); -} catch (\Exception $e) { - fwrite(STDERR, 'Please, check passed path. Dependencies report generator failed: ' . $e->getMessage() . PHP_EOL); - exit(1); -}