ModuleFiles   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 5
dl 0
loc 66
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A proceed() 0 18 2
A createSubModule() 0 15 2
1
<?php
2
3
namespace Mnabialek\LaravelModular\Console\Commands;
4
5
use Mnabialek\LaravelModular\Models\Module;
6
use Mnabialek\LaravelModular\Traits\Replacer;
7
use Mnabialek\LaravelModular\Console\Traits\ModuleCreator;
8
9
class ModuleFiles extends BaseCommand
10
{
11
    use Replacer;
12
    use ModuleCreator;
13
    /**
14
     * The name and signature of the console command.
15
     *
16
     * @var string
17
     */
18
    protected $signature = 'module:files 
19
    {module : Module name}
20
    {name* : Name (or multiple names space separated)}
21
    {--group= : Stub group name that will be used for creating those files}';
22
23
    /**
24
     * The console command description.
25
     *
26
     * @var string
27
     */
28
    protected $description = 'Generates new files structure in existing module.';
29
30
    /**
31
     * {@inheritdoc}
32
     */
33
    public function proceed()
34
    {
35
        $moduleName = $this->argument('module');
36
        $subModules = collect($this->argument('name'))->unique();
37
        $stubGroup = $this->getFilesStubGroup();
38
39
        $this->verifyStubGroup($stubGroup);
40
41
        if (!($module = $this->laravel['modular']->find($moduleName))) {
42
            $this->error("[Module {$moduleName}] This module does not exist. Run <comment>module:make {$moduleName}</comment> command first to create it");
43
44
            return;
45
        }
46
47
        $subModules->each(function ($subModule) use ($module, $stubGroup) {
48
            $this->createSubModule($module, $subModule, $stubGroup);
49
        });
50
    }
51
52
    /**
53
     * Create submodule for given module
54
     *
55
     * @param Module $module
56
     * @param string $subModule
57
     * @param string $stubGroup
58
     */
59
    protected function createSubModule(Module $module, $subModule, $stubGroup)
60
    {
61
        // first create directories
62
        $this->createModuleDirectories($module, $stubGroup);
63
64
        // now create files
65
        $status = $this->createModuleFiles($module, $stubGroup, $subModule);
66
67
        if ($status) {
68
            $this->info("[Module {$module->name()}] Submodule {$subModule} was created.");
69
            $this->comment("You should register submodule routes (if any) into routes file for module {$module->name()}");
70
        } else {
71
            $this->warn("[Module {$module->name()}] Submodule {$subModule} NOT created (all files already exist).");
72
        }
73
    }
74
}
75