From 9ff6c8d88394793a4d077c5504f595c3bc1d1673 Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Sat, 20 Jun 2020 08:50:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A8=A1=E5=9D=97=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=AE=89=E8=A3=85=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../install/InstallModuleServiceCommand.php | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/extend/catcher/command/install/InstallModuleServiceCommand.php b/extend/catcher/command/install/InstallModuleServiceCommand.php index b3d9bbc..119ef8b 100644 --- a/extend/catcher/command/install/InstallModuleServiceCommand.php +++ b/extend/catcher/command/install/InstallModuleServiceCommand.php @@ -1 +1,118 @@ + * @copyright By CatchAdmin + * @license https://github.com/yanwenwu/catch-admin/blob/master/LICENSE.txt + */ +namespace catcher\command\install; + +use catcher\CatchAdmin; +use think\console\Command; +use think\console\Input; +use think\console\input\Option; +use think\console\Output; + +class InstallModuleServiceCommand extends Command +{ + protected function configure() + { + $this->setName('catch-module:service') + ->addOption('module', '-m',Option::VALUE_REQUIRED, 'module name') + ->setDescription('install catch module service'); + } + + protected function execute(Input $input, Output $output) + { + $module = $input->getOption('module'); + + $moduleServices = $this->getServices($module); + + $services = []; + $servicesPath = root_path() . 'vendor' . DIRECTORY_SEPARATOR . 'services.php'; + if (file_exists($servicesPath)) { + $services = include $servicesPath; + } + + $services = array_unique(array_merge($services, $moduleServices)); + + $this->exportServices($services, $servicesPath); + + $output->info('export service successfully'); + } + + /** + * 导出服务 + * + * @time 2020年06月20日 + * @param $services + * @param $servicesPath + * @return void + */ + protected function exportServices($services, $servicesPath) + { + $exportArr = var_export($services, true); + + $currentTime = date('Y-m-d H:i:s'); + + file_put_contents($servicesPath, <<getModules($module) as $module) { + $information = CatchAdmin::getModuleInfo($module); + if (!empty($information)) { + if (isset($information['services']) && !empty($information['services'])) { + $services = array_merge($services, $information['services']); + } + } + } + + return $services; + } + + /** + * 获取模块 + * + * @time 2020年06月20日 + * @param $module + * @return array + */ + protected function getModules($module) + { + $moduleNames = []; + + if (!$module) { + $modules = CatchAdmin::getModulesDirectory(); + foreach ($modules as $module) { + $m = explode(DIRECTORY_SEPARATOR, $module); + + $moduleNames[] = array_pop($m); + } + + return $moduleNames; + } + + return [$module]; + } +} \ No newline at end of file