PublishSettingsConfig::writeConfig()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 15
rs 10
cc 1
nc 1
nop 2
1
<?php
2
3
namespace LaravelPropertyBag\Commands;
4
5
use LaravelPropertyBag\Helpers\NameResolver;
6
7
class PublishSettingsConfig extends PbagCommand
8
{
9
    /**
10
     * The name and signature of the console command.
11
     *
12
     * @var string
13
     */
14
    protected $signature = 'pbag:make {resource}';
15
16
    /**
17
     * The console command description.
18
     *
19
     * @var string
20
     */
21
    protected $description = 'Make a settings config file for a resource.';
22
23
    /**
24
     * Execute the console command.
25
     */
26
    public function handle()
27
    {
28
        $this->makeDir('Settings');
29
30
        $namespace = NameResolver::getAppNamespace().'Settings';
31
32
        $resourceName = ucfirst($this->argument('resource'));
0 ignored issues
show
Bug introduced by
It seems like $this->argument('resource') can also be of type string[]; however, parameter $str of ucfirst() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

32
        $resourceName = ucfirst(/** @scrutinizer ignore-type */ $this->argument('resource'));
Loading history...
33
34
        $this->writeConfig($namespace, $resourceName);
35
36
        $this->info("{$resourceName} settings file successfully created!");
37
    }
38
39
    /**
40
     * Write the settings file into the settings folder.
41
     *
42
     * @param string $namespace
43
     * @param string $resourceName
44
     */
45
    protected function writeConfig($namespace, $resourceName)
46
    {
47
        $stub = file_get_contents(
48
            __DIR__.'/../Stubs/ResourceConfig.php'
49
        );
50
51
        $stub = $this->replace('{{Namespace}}', $namespace, $stub);
52
53
        $name = $resourceName.'Settings';
54
55
        $stub = $this->replace('{{ClassName}}', $name, $stub);
56
57
        file_put_contents(
58
            base_path("app/Settings/{$name}.php"),
59
            $stub
60
        );
61
    }
62
}
63