@@ -70,17 +70,29 @@ class CliSource implements SourceInterface
7070 * @var array
7171 */
7272 private static $ enableOptionsMap = [
73- self ::OPTION_PHP => [self ::PHP ],
73+ self ::OPTION_PHP => [
74+ self ::PHP => true
75+ ],
7476 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
7895 ],
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 ],
8496 ];
8597
8698 /**
@@ -128,13 +140,25 @@ public function read(): Repository
128140 ]);
129141 }
130142
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+ */
131150 foreach (self ::$ enableOptionsMap as $ option => $ services ) {
132151 if ($ value = $ this ->input ->getOption ($ option )) {
133- foreach ($ services as $ service ) {
152+ foreach ($ services as $ service => $ status ) {
134153 $ repository ->set ([
135- $ service . '.enabled ' => true ,
136154 $ service . '.version ' => $ value
137155 ]);
156+
157+ if ($ status === true ) {
158+ $ repository ->set ([
159+ $ service . '.enabled ' => true
160+ ]);
161+ }
138162 }
139163 }
140164 }
0 commit comments