/** * Get replacement array that will be used for replace in string * * @param Module $module * @param array $definedReplacements * * @return Collection */ private function getReplacements(Module $module, array $definedReplacements) { $replacements = collect(); collect(['module' => $module->name(), 'class' => $module->name(), 'moduleNamespace' => $module->name(), 'namespace' => rtrim($this->configClass()->modulesNamespace(), '\\'), 'plural|lower' => mb_strtolower(str_plural($module->name()))])->merge($definedReplacements)->each(function ($value, $key) use($replacements) { $replacements->put($this->configClass()->startSeparator() . $key . $this->configClass()->endSeparator(), $value); }); return $replacements; }
/** * Add module to configuration file * * @param $module */ protected function addModuleToConfigurationFile(Module $module) { $configFile = $this->laravel['modular.config']->configPath(); if (!$this->laravel['modular.config']->autoAdd()) { $this->info("[Module {$module->name()}] - auto-adding to config file turned off\n" . "Please add this module manually into {$configFile} file if you want to use it"); return; } // getting modified content of config file $result = preg_replace_callback($this->laravel['modular.config']->autoAddPattern(), function ($matches) use($module, $configFile) { return $matches[1] . $matches[2] . $this->replace($this->laravel['modular.config']->autoAddTemplate(), $module) . $matches[3]; }, $this->laravel['files']->get($configFile), -1, $count); if ($count) { // found place where new module should be added into config file $this->laravel['files']->put($configFile, $result); $this->comment("[Module {$module->name()}] Added into config file {$configFile}"); } else { // cannot add module to config file automatically $this->warn("[Module {$module->name()}] It was impossible to add module into {$configFile}" . " file.\n Please make sure you haven't changed structure of this file. " . "At the moment add <info>{$module->name()}</info> to this file manually"); } }
/** * Create files inside given module * * @param Module $module * @param string $stubGroup * @param string $subModule * * @return bool */ protected function createModuleFiles(Module $module, $stubGroup, $subModule = null) { $files = collect($this->laravel['modular.config']->stubGroupFiles($stubGroup)); if ($files->isEmpty()) { $this->warn("[Module {$module->name()}] No files created"); return false; } $replacements = $subModule ? ['class' => $subModule] : []; $files->each(function ($stubFile, $moduleFile) use($module, $stubGroup, $replacements) { $this->copyStubFileIntoModule($module, $stubFile, $stubGroup, $moduleFile, $replacements); }); return true; }
/** @test */ public function it_returns_valid_module_name() { $this->createModuleMock(); $this->assertSame($this->name, $this->module->name()); }