Completed
Push — master ( dbcdef...054658 )
by recca
02:01
created

GeneratorCommand   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 57.89%

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 6
c 2
b 1
f 0
lcom 1
cbo 4
dl 0
loc 69
ccs 11
cts 19
cp 0.5789
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A qualifyClass() 0 14 2
A rootNamespace() 0 4 1
A getStubResource() 0 8 2
1
<?php
2
3
namespace Recca0120\Generator\Console;
4
5
use Illuminate\Support\Str;
6
use Recca0120\Generator\Generator;
7
use Illuminate\Filesystem\Filesystem;
8
use Illuminate\Console\GeneratorCommand as BaseCommand;
9
10
abstract class GeneratorCommand extends BaseCommand
11
{
12
    /**
13
     * $generator.
14
     *
15
     * @var \Recca0120\Generator\Generator
16
     */
17
    protected $generator;
18
19
    /**
20
     * Create a new controller creator command instance.
21
     *
22
     * @param \Illuminate\Filesystem\Filesystem $files
23
     * @param \Recca0120\Generator\Generator
24
     */
25 7
    public function __construct(Filesystem $files, Generator $generator)
26
    {
27 7
        parent::__construct($files);
28
29 7
        $this->generator = $generator;
30 7
    }
31
32
    /**
33
     * Parse the class name and format according to the root namespace.
34
     *
35
     * @param string $name
36
     * @return string
37
     */
38
    protected function qualifyClass($name)
39
    {
40
        $rootNamespace = $this->rootNamespace();
41
42
        if (Str::startsWith($name, $rootNamespace)) {
43
            return $name;
44
        }
45
46
        $name = str_replace('/', '\\', $name);
47
48
        return $this->qualifyClass(
49
            $this->getDefaultNamespace(trim($rootNamespace, '\\')).'\\'.$name
50
        );
51
    }
52
53
    /**
54
     * Get the root namespace for the class.
55
     *
56
     * @return string
57
     */
58 4
    protected function rootNamespace()
59
    {
60 4
        return $this->laravel->getNamespace();
61
    }
62
63
    /**
64
     * getStubResource.
65
     *
66
     * @param string $stub
67
     * @param string $folder
68
     * @return string
69
     */
70 7
    protected function getStubResource($stub, $folder = 'app')
71
    {
72 7
        $root = $this->laravel->basePath().'/resources/views/generator/'.$folder.'/';
73
74 7
        return $this->files->exists($root.$stub) === true
75 7
            ? $root.$stub
76 7
            : __DIR__.'/../../resources/stubs/'.$folder.'/'.$stub;
77
    }
78
}
79