@@ -70,17 +70,29 @@ class CliSource implements SourceInterface
70
70
* @var array
71
71
*/
72
72
private static $ enableOptionsMap = [
73
- self ::OPTION_PHP => [self ::PHP ],
73
+ self ::OPTION_PHP => [
74
+ self ::PHP => true
75
+ ],
74
76
self ::OPTION_DB => [
75
- self ::SERVICES_DB ,
76
- self ::SERVICES_DB_QUOTE ,
77
- self ::SERVICES_DB_SALES
77
+ self ::SERVICES_DB => true ,
78
+ self ::SERVICES_DB_QUOTE => false ,
79
+ self ::SERVICES_DB_SALES => false
80
+ ],
81
+ self ::OPTION_NGINX => [
82
+ self ::SERVICES_NGINX => true
83
+ ],
84
+ self ::OPTION_REDIS => [
85
+ self ::SERVICES_REDIS => true
86
+ ],
87
+ self ::OPTION_ES => [
88
+ self ::SERVICES_ES => true
89
+ ],
90
+ self ::OPTION_NODE => [
91
+ self ::SERVICES_NODE => true
92
+ ],
93
+ self ::OPTION_RABBIT_MQ => [
94
+ self ::SERVICES_RMQ => true
78
95
],
79
- self ::OPTION_NGINX => [self ::SERVICES_NGINX ],
80
- self ::OPTION_REDIS => [self ::SERVICES_REDIS ],
81
- self ::OPTION_ES => [self ::SERVICES_ES ],
82
- self ::OPTION_NODE => [self ::SERVICES_NODE ],
83
- self ::OPTION_RABBIT_MQ => [self ::SERVICES_RMQ ],
84
96
];
85
97
86
98
/**
@@ -128,13 +140,25 @@ public function read(): Repository
128
140
]);
129
141
}
130
142
143
+ /**
144
+ * Loop through options to enable services.
145
+ * Each option may have one or more dependencies.
146
+ *
147
+ * The dependencies must be in sync.
148
+ * The dependencies which does not change status, must keep their default status.
149
+ */
131
150
foreach (self ::$ enableOptionsMap as $ option => $ services ) {
132
151
if ($ value = $ this ->input ->getOption ($ option )) {
133
- foreach ($ services as $ service ) {
152
+ foreach ($ services as $ service => $ status ) {
134
153
$ repository ->set ([
135
- $ service . '.enabled ' => true ,
136
154
$ service . '.version ' => $ value
137
155
]);
156
+
157
+ if ($ status === true ) {
158
+ $ repository ->set ([
159
+ $ service . '.enabled ' => true
160
+ ]);
161
+ }
138
162
}
139
163
}
140
164
}
0 commit comments