ProviderMakeCommand::getTemplateContents()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
c 1
b 0
f 0
dl 0
loc 19
rs 9.7666
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Rawilk\LaravelModules\Commands\Generators;
4
5
use Rawilk\LaravelModules\Support\Config\GenerateConfigReader;
6
use Rawilk\LaravelModules\Support\Stub;
7
use Rawilk\LaravelModules\Traits\ModuleCommands;
8
9
class ProviderMakeCommand extends GeneratorCommand
10
{
11
    use ModuleCommands;
12
13
    /** @var string */
14
    protected $argumentName = 'name';
15
16
    /** @var string */
17
    protected $signature = 'module:make-provider
18
                            {name : The service provider name}
19
                            {module? : The name of the module to create a new service provider for}
20
                            {--m|master : Indicates the master service provider}';
21
22
    /** @var string */
23
    protected $description = 'Create a new service provider class for the specified module.';
24
25
    protected function getDefaultNamespace(): string
26
    {
27
        /** @var \Rawilk\LaravelModules\Contracts\Repository $module */
28
        $module = $this->laravel['modules'];
29
30
        return $module->config('paths.generator.provider.namespace') ?: $module->config('paths.generator.provider.path', 'Providers');
31
    }
32
33
    protected function getDestinationFilePath(): string
34
    {
35
        $path = $this->laravel['modules']->getModulePath($this->getModuleName());
36
37
        $generatorPath = GenerateConfigReader::read('provider');
38
39
        return $path . $generatorPath->getPath() . '/' . $this->getFileName() . '.php';
40
    }
41
42
    protected function getTemplateContents(): string
43
    {
44
        /** @var \Rawilk\LaravelModules\Module $module */
45
        $module = $this->laravel['modules']->findOrFail($this->getModuleName());
46
47
        return (new Stub($this->getStubName(), [
48
            'NAMESPACE'        => $this->getClassNamespace($module),
49
            'CLASS'            => $this->getClass(),
50
            'LOWER_NAME'       => $module->getLowerName(),
51
            'MODULE'           => $this->getModuleName(),
52
            'NAME'             => $this->getFileName(),
53
            'STUDLY_NAME'      => $module->getStudlyName(),
54
            'MODULE_NAMESPACE' => $this->laravel['modules']->config('namespace'),
55
            'PATH_VIEWS'       => GenerateConfigReader::read('views')->getPath(),
56
            'PATH_LANG'        => GenerateConfigReader::read('lang')->getPath(),
57
            'PATH_CONFIG'      => GenerateConfigReader::read('config')->getPath(),
58
            'MIGRATIONS_PATH'  => GenerateConfigReader::read('migration')->getPath(),
59
            'FACTORIES_PATH'   => GenerateConfigReader::read('factory')->getPath(),
60
        ]))->render();
61
    }
62
63
    private function getStubName(): string
64
    {
65
        if ($this->option('master')) {
66
            return '/scaffold/provider.stub';
67
        }
68
69
        return '/provider.stub';
70
    }
71
}
72