DOCUMENTATION: add documentantion for installation commands

This commit is contained in:
Michal Kváček
2016-03-14 13:23:57 +01:00
parent 9ac8c24673
commit a237133227
2 changed files with 30 additions and 3 deletions
+2 -1
View File
@@ -3,7 +3,6 @@
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\File;
class InstallAllModules extends Command
@@ -38,11 +37,13 @@ class InstallAllModules extends Command
*/
public function handle()
{
// crawl all subdirectories in modules path
$modules = File::directories(config('modules.paths.modules'));
foreach ($modules as $module) {
$moduleName = basename($module);
// try to install each module
try {
$this->call('install-module', ['name' => $moduleName]);
} catch (\Exception $e) {
+28 -2
View File
@@ -42,23 +42,32 @@ class InstallModule extends Command
*/
public function handle()
{
$name = $this->argument('name');
$this->moduleName = $name;
$this->moduleName = $name = $this->argument('name');
// invalid module name provided
if (!is_dir($this->modulesPath . DIRECTORY_SEPARATOR . $name)) {
throw new InvalidArgumentException('Invalid module ' . $name . '. No directory under ' . $this->modulesPath . DIRECTORY_SEPARATOR . $name . ' found!');
}
// get config
$config = $this->loadConfig();
// check if it is valid
$this->checkMandatoryFields($config);
// all mandatory fields are present, we can write it into database and create modules.json
$this->installModule($config);
// inform user
$this->line('Module ' . $name . ' successfuly installed');
}
/**
* Load config from Config/config.php in module files. We cannot use config() because the file have not published
* yet.
*
* @return array
*/
private function loadConfig()
{
// we cannot rely on config() helper, because this module does not have to be published
@@ -67,6 +76,11 @@ class InstallModule extends Command
return $config;
}
/**
* Checks if config contains all mandatory entries.
*
* @param $config
*/
private function checkMandatoryFields($config)
{
$fields = ['providers', 'handler', 'name', 'files', 'alias'];
@@ -77,6 +91,18 @@ class InstallModule extends Command
}
}
/**
* Installs module into database.
*
* This method calls Module::install, which handles specific installation of module. In this way we should be able
* to install any module even with some other database structures.
*
* @param $config
*
* @return Module
* @throws \ErrorException
* @throws \Exception
*/
private function installModule($config)
{
$name = isset($config['translatedName']) ? $config['translatedName'] : $config['name'];