@@ -35,47 +35,36 @@ class PackagesInstaller implements InstallerInterface
35
35
/** @var array */
36
36
public $ mapping = [
37
37
MappingResolver::DEFAULT_MAPPING_TYPE => [
38
- [
39
- 'name ' => 'phpunit/phpunit ' ,
38
+ 'phpunit/phpunit ' => [
40
39
'version ' => '@stable ' ,
41
- 'dev ' => true ,
42
- 'allowVersionOverride ' => false
40
+ 'updateDependencies ' => true ,
41
+ 'allowVersionOverride ' => false ,
43
42
]
44
43
],
45
44
'magento1 ' => [
46
- [
47
- 'name ' => 'youwe/coding-standard-magento1 ' ,
45
+ 'youwe/coding-standard-magento1 ' => [
48
46
'version ' => '^1.3.0 ' ,
49
- 'dev ' => true ,
50
- 'allowVersionOverride ' => true
47
+ 'updateDependencies ' => true ,
51
48
]
52
49
],
53
50
'magento2 ' => [
54
- [
55
- 'name ' => 'youwe/coding-standard-magento2 ' ,
51
+ 'youwe/coding-standard-magento2 ' => [
56
52
'version ' => '^2.0.0 ' ,
57
- 'dev ' => true ,
58
- 'allowVersionOverride ' => true
53
+ 'updateDependencies ' => true ,
59
54
],
60
- [
61
- 'name ' => 'phpstan/extension-installer ' ,
55
+ 'phpstan/extension-installer ' => [
62
56
'version ' => '^1.3 ' ,
63
- 'dev ' => true ,
64
- 'allowVersionOverride ' => true ,
57
+ 'updateDependencies ' => true ,
65
58
],
66
- [
67
- 'name ' => 'bitexpert/phpstan-magento ' ,
59
+ 'bitexpert/phpstan-magento ' => [
68
60
'version ' => '~0.30 ' ,
69
- 'dev ' => true ,
70
- 'allowVersionOverride ' => true ,
61
+ 'updateDependencies ' => true ,
71
62
],
72
63
],
73
64
'laravel ' => [
74
- [
75
- 'name ' => 'elgentos/laravel-coding-standard ' ,
65
+ 'elgentos/laravel-coding-standard ' => [
76
66
'version ' => '^1.0.0 ' ,
77
- 'dev ' => true ,
78
- 'allowVersionOverride ' => true ,
67
+ 'updateDependencies ' => true ,
79
68
]
80
69
]
81
70
];
@@ -93,8 +82,8 @@ public function __construct(
93
82
Composer $ composer ,
94
83
ProjectTypeResolver $ typeResolver ,
95
84
IOInterface $ io ,
96
- DependencyInstaller $ installer = null ,
97
- array $ mapping = null
85
+ ? DependencyInstaller $ installer = null ,
86
+ ? array $ mapping = null
98
87
) {
99
88
$ this ->composer = $ composer ;
100
89
$ this ->typeResolver = $ typeResolver ;
@@ -112,20 +101,20 @@ public function install(): void
112
101
{
113
102
$ type = $ this ->typeResolver ->resolve ();
114
103
$ projectTypePackages = $ this ->mapping [$ type ] ?? [];
115
- $ packagesToInstall = array_merge ( $ projectTypePackages , $ this ->mapping [MappingResolver::DEFAULT_MAPPING_TYPE ]);
104
+ $ packagesToInstall = array_replace_recursive ( $ this ->mapping [MappingResolver::DEFAULT_MAPPING_TYPE ], $ projectTypePackages );
116
105
117
- foreach ($ packagesToInstall as $ package ) {
118
- if (!$ this ->isPackageRequired ($ package [ ' name ' ] , $ package ['version ' ])) {
106
+ foreach ($ packagesToInstall as $ name => $ package ) {
107
+ if (!$ this ->isPackageRequired ($ name , $ package ['version ' ])) {
119
108
$ this ->io ->write (
120
- sprintf ('Requiring package %s ' , $ package [ ' name ' ] )
109
+ sprintf ('Requiring package %s ' , $ name )
121
110
);
122
111
123
112
$ this ->installer ->installPackage (
124
- $ package [ ' name ' ] ,
113
+ $ name ,
125
114
$ package ['version ' ],
126
- true ,
127
- false ,
128
- $ package ['allowVersionOverride ' ]
115
+ $ package [ ' dev ' ] ?? true ,
116
+ $ package [ ' updateDependencies ' ] ?? false ,
117
+ $ package ['allowVersionOverride ' ] ?? true
129
118
);
130
119
}
131
120
}
@@ -135,6 +124,7 @@ public function install(): void
135
124
* Whether a package has been required.
136
125
*
137
126
* @param string $packageName
127
+ * @param string $version
138
128
*
139
129
* @return bool
140
130
*/
0 commit comments