13
13
class DependencyChecker
14
14
{
15
15
/**
16
- * Enabled module list from configuration
17
- *
18
- * @var array
19
- */
20
- private $ enabledModuleList ;
21
-
22
- /**
23
- * The full module list information from filesystem
24
- *
25
- * @var array
16
+ * @var PackageInfo
26
17
*/
27
- private $ fullModuleList ;
18
+ private $ packageInfo ;
28
19
29
20
/**
30
- * Graph
31
- *
32
- * @var Graph
21
+ * @var ModuleList
33
22
*/
34
- private $ graph ;
23
+ private $ list ;
35
24
36
25
/**
37
- * @var PackageInfo
26
+ * @var ModuleList\Loader
38
27
*/
39
- protected $ packageInfo ;
28
+ private $ loader ;
40
29
41
30
/**
42
31
* Constructor
43
32
*
44
33
* @param ModuleList $list
45
34
* @param ModuleList\Loader $loader
46
- * @param PackageInfoFactory $packageInfoFactory
35
+ * @param PackageInfo $packageInfo
47
36
*/
48
- public function __construct (ModuleList $ list , ModuleList \Loader $ loader , PackageInfoFactory $ packageInfoFactory )
37
+ public function __construct (ModuleList $ list , ModuleList \Loader $ loader , PackageInfo $ packageInfo )
49
38
{
50
- $ this ->enabledModuleList = $ list-> getNames () ;
51
- $ this ->fullModuleList = $ loader-> load () ;
52
- $ this ->packageInfo = $ packageInfoFactory -> create () ;
39
+ $ this ->list = $ list ;
40
+ $ this ->loader = $ loader ;
41
+ $ this ->packageInfo = $ packageInfo ;
53
42
}
54
43
55
44
/**
@@ -58,10 +47,11 @@ public function __construct(ModuleList $list, ModuleList\Loader $loader, Package
58
47
* @param string[] $toBeDisabledModules
59
48
* @param string[] $currentlyEnabledModules
60
49
* @return array
50
+ * @throws \Magento\Framework\Exception\LocalizedException
61
51
*/
62
52
public function checkDependenciesWhenDisableModules ($ toBeDisabledModules , $ currentlyEnabledModules = null )
63
53
{
64
- $ masterList = isset ( $ currentlyEnabledModules) ? $ currentlyEnabledModules : $ this ->enabledModuleList ;
54
+ $ masterList = $ currentlyEnabledModules ?? $ this ->list -> getNames () ;
65
55
// assume disable succeeds: currently enabled modules - to-be-disabled modules
66
56
$ enabledModules = array_diff ($ masterList , $ toBeDisabledModules );
67
57
return $ this ->checkDependencyGraph (false , $ toBeDisabledModules , $ enabledModules );
@@ -73,10 +63,11 @@ public function checkDependenciesWhenDisableModules($toBeDisabledModules, $curre
73
63
* @param string[] $toBeEnabledModules
74
64
* @param string[] $currentlyEnabledModules
75
65
* @return array
66
+ * @throws \Magento\Framework\Exception\LocalizedException
76
67
*/
77
- public function checkDependenciesWhenEnableModules ($ toBeEnabledModules , $ currentlyEnabledModules = null )
68
+ public function checkDependenciesWhenEnableModules (array $ toBeEnabledModules , array $ currentlyEnabledModules = null )
78
69
{
79
- $ masterList = isset ( $ currentlyEnabledModules) ? $ currentlyEnabledModules : $ this ->enabledModuleList ;
70
+ $ masterList = $ currentlyEnabledModules ?? $ this ->list -> getNames () ;
80
71
// assume enable succeeds: union of currently enabled modules and to-be-enabled modules
81
72
$ enabledModules = array_unique (array_merge ($ masterList , $ toBeEnabledModules ));
82
73
return $ this ->checkDependencyGraph (true , $ toBeEnabledModules , $ enabledModules );
@@ -89,19 +80,21 @@ public function checkDependenciesWhenEnableModules($toBeEnabledModules, $current
89
80
* @param string[] $moduleNames list of modules to be enabled/disabled
90
81
* @param string[] $enabledModules list of enabled modules assuming enable/disable succeeds
91
82
* @return array
83
+ * @throws \Magento\Framework\Exception\LocalizedException
92
84
*/
93
- private function checkDependencyGraph ($ isEnable , $ moduleNames , $ enabledModules )
85
+ private function checkDependencyGraph (bool $ isEnable , array $ moduleNames , array $ enabledModules )
94
86
{
95
- $ this ->graph = $ this ->createGraph ();
87
+ $ fullModuleList = $ this ->loader ->load ();
88
+ $ graph = $ this ->createGraph ($ fullModuleList );
96
89
$ dependenciesMissingAll = [];
97
90
$ graphMode = $ isEnable ? Graph::DIRECTIONAL : Graph::INVERSE ;
91
+ $ modules = array_merge (
92
+ array_keys ($ fullModuleList ),
93
+ $ this ->packageInfo ->getNonExistingDependencies ()
94
+ );
98
95
foreach ($ moduleNames as $ moduleName ) {
99
96
$ dependenciesMissing = [];
100
- $ paths = $ this ->graph ->findPathsToReachableNodes ($ moduleName , $ graphMode );
101
- $ modules = array_merge (
102
- array_keys ($ this ->fullModuleList ),
103
- $ this ->packageInfo ->getNonExistingDependencies ()
104
- );
97
+ $ paths = $ graph ->findPathsToReachableNodes ($ moduleName , $ graphMode );
105
98
foreach ($ modules as $ module ) {
106
99
if (isset ($ paths [$ module ])) {
107
100
if ($ isEnable && !in_array ($ module , $ enabledModules )) {
@@ -119,15 +112,16 @@ private function checkDependencyGraph($isEnable, $moduleNames, $enabledModules)
119
112
/**
120
113
* Create the dependency graph
121
114
*
115
+ * @param array $fullModuleList
122
116
* @return Graph
123
117
*/
124
- private function createGraph ()
118
+ private function createGraph (array $ fullModuleList ): Graph
125
119
{
126
120
$ nodes = [];
127
121
$ dependencies = [];
128
122
129
123
// build the graph data
130
- foreach (array_keys ($ this -> fullModuleList ) as $ moduleName ) {
124
+ foreach (array_keys ($ fullModuleList ) as $ moduleName ) {
131
125
$ nodes [] = $ moduleName ;
132
126
foreach ($ this ->packageInfo ->getRequire ($ moduleName ) as $ dependModuleName ) {
133
127
if ($ dependModuleName ) {
0 commit comments