From d94921837c3c216ddc23878d5e5649d82423f204 Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Mon, 13 Feb 2017 20:02:01 -0800 Subject: [PATCH] Read service tag attribute bootstrap. --- src/Extender.php | 20 ++++++++++++++++++-- src/ExtenderManager.php | 26 ++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/Extender.php b/src/Extender.php index 6c27d9f..902d4f9 100644 --- a/src/Extender.php +++ b/src/Extender.php @@ -67,6 +67,7 @@ public function processPackages(PackageEvent $event) $configFile = $directory . '/extend.console.config.yml'; $servicesFile = $directory . '/extend.console.services.yml'; + $servicesUnistallFile = $directory . '/extend.console.uninstall.services.yml'; if (file_exists($configFile)) { unlink($configFile); @@ -78,6 +79,11 @@ public function processPackages(PackageEvent $event) $this->io->write('Removing services cache file:' . $servicesFile); } + if (file_exists($servicesUnistallFile)) { + unlink($servicesUnistallFile); + $this->io->write('Removing services cache file:' . $servicesUnistallFile); + } + if ($configData = $extenderManager->getConfigData()) { file_put_contents( $configFile, @@ -86,12 +92,22 @@ public function processPackages(PackageEvent $event) $this->io->write('Creating config cache file:' . $configFile); } - if ($servicesData = $extenderManager->getServicesData()) { + $servicesData = $extenderManager->getServicesData(); + if ($servicesData && array_key_exists('install', $servicesData)) { file_put_contents( $servicesFile, - Yaml::dump($servicesData, 4, 2) + Yaml::dump($servicesData['install'], 4, 2) ); $this->io->write('Creating services cache file: ' . $servicesFile); } + + $servicesData = $extenderManager->getServicesData(); + if ($servicesData && array_key_exists('uninstall', $servicesData)) { + file_put_contents( + $servicesUnistallFile, + Yaml::dump($servicesData['uninstall'], 4, 2) + ); + $this->io->write('Creating services cache file: ' . $servicesUnistallFile); + } } } diff --git a/src/ExtenderManager.php b/src/ExtenderManager.php index 0fa38c8..81bc643 100644 --- a/src/ExtenderManager.php +++ b/src/ExtenderManager.php @@ -69,10 +69,28 @@ public function addServicesFile($servicesFile) { $servicesData = $this->parseData($servicesFile); if ($this->isValidServicesData($servicesData)) { - $this->servicesData = array_merge_recursive( - $servicesData, - $this->servicesData - ); + foreach ($servicesData['services'] as $key => $definition) { + if (!array_key_exists('tags', $definition)) { + continue; + } + $bootstrap = 'install'; + foreach ($definition['tags'] as $tags) { + if (!array_key_exists('name', $tags)) { + continue; + } + + if (array_key_exists('bootstrap', $tags)) { + $bootstrap = $tags['bootstrap']; + } + } + + $packageService[$bootstrap]['services'][$key] = $definition; + + $this->servicesData = array_merge_recursive( + $packageService, + $this->servicesData + ); + } } }