@@ -182,20 +182,39 @@ public function process()
182
182
* @param array $packages
183
183
* @param array $packageJob
184
184
* @return void
185
+ *
186
+ * @SuppressWarnings(PHPMD.CyclomaticComplexity)
185
187
*/
186
188
private function assertAndExecute ($ name , array & $ packages , array $ packageJob )
187
189
{
188
190
/** @var Package $package */
189
191
$ package = $ packageJob ['package ' ];
192
+ $ dependenciesNotFinished = false ;
190
193
if ($ package ->getParent () && $ package ->getParent () !== $ package ) {
191
194
foreach ($ packageJob ['dependencies ' ] as $ dependencyName => $ dependency ) {
192
195
if (!$ this ->isDeployed ($ dependency )) {
193
- $ this ->assertAndExecute ($ dependencyName , $ packages , $ packages [$ dependencyName ]);
196
+ //If it's not present in $packages then it's already
197
+ //in progress so just waiting...
198
+ if (!array_key_exists ($ dependencyName , $ packages )) {
199
+ $ dependenciesNotFinished = true ;
200
+ } else {
201
+ $ this ->assertAndExecute (
202
+ $ dependencyName ,
203
+ $ packages ,
204
+ $ packages [$ dependencyName ]
205
+ );
206
+ }
194
207
}
195
208
}
196
209
}
197
- if (!$ this ->isDeployed ($ package )
198
- && ($ this ->maxProcesses < 2 || (count ($ this ->inProgress ) < $ this ->maxProcesses ))) {
210
+
211
+ if (!$ dependenciesNotFinished
212
+ && !$ this ->isDeployed ($ package )
213
+ && (
214
+ $ this ->maxProcesses < 2
215
+ || (count ($ this ->inProgress ) < $ this ->maxProcesses )
216
+ )
217
+ ) {
199
218
unset($ packages [$ name ]);
200
219
$ this ->execute ($ package );
201
220
}
0 commit comments