From 795a94b3daaf68a774113d07612700f579c98496 Mon Sep 17 00:00:00 2001
From: Eddie Lau <kahlau@ebay.com>
Date: Wed, 29 Apr 2015 11:25:59 -0500
Subject: [PATCH] MAGETWO-36071: Move
 dev/tools/Magento/Tools/Dependency/generate/*.dependencies.php tools

- moved * dependencies tools
---
 .../Command/AbstractDependenciesCommand.php   | 62 +++++++++++++++++++
 .../DependenciesShowFrameworkCommand.php      | 47 ++++++++++++++
 ...DependenciesShowModulesCircularCommand.php | 42 +++++++++++++
 .../DependenciesShowModulesCommand.php        | 42 +++++++++++++
 .../Magento/Tools/Console/CommandList.php     |  6 +-
 .../Tools/Dependency/generate/bootstrap.php   |  7 ---
 .../generate/framework-dependencies.php       | 39 ------------
 .../modules-circular-dependencies.php         | 34 ----------
 .../generate/modules-dependencies.php         | 35 -----------
 9 files changed, 198 insertions(+), 116 deletions(-)
 create mode 100644 dev/tools/Magento/Tools/Console/Command/AbstractDependenciesCommand.php
 create mode 100644 dev/tools/Magento/Tools/Console/Command/DependenciesShowFrameworkCommand.php
 create mode 100644 dev/tools/Magento/Tools/Console/Command/DependenciesShowModulesCircularCommand.php
 create mode 100644 dev/tools/Magento/Tools/Console/Command/DependenciesShowModulesCommand.php
 delete mode 100644 dev/tools/Magento/Tools/Dependency/generate/bootstrap.php
 delete mode 100644 dev/tools/Magento/Tools/Dependency/generate/framework-dependencies.php
 delete mode 100644 dev/tools/Magento/Tools/Dependency/generate/modules-circular-dependencies.php
 delete mode 100644 dev/tools/Magento/Tools/Dependency/generate/modules-dependencies.php

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 00000000000..da55debb00b
--- /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 00000000000..9dc7ff43f46
--- /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 00000000000..10ac41906e4
--- /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 00000000000..838327d0d47
--- /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 a25d185b58c..1b2f2b8dab9 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 ead28a57251..00000000000
--- 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 ebdc4e12567..00000000000
--- 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 ed5869bd2b0..00000000000
--- 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 b32dadf099e..00000000000
--- 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);
-}
-- 
GitLab