Completed
Push — master ( b3febe...348067 )
by Zach
04:06 queued 02:03
created

DirectoryCreator::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 8
rs 9.4285
1
<?php
2
3
namespace Yarak\DB;
4
5
use Yarak\Config\Config;
6
use Yarak\Helpers\Loggable;
7
use Yarak\Helpers\Filesystem;
8
9
class DirectoryCreator
10
{
11
    use Filesystem, Loggable;
12
13
    /**
14
     * Yarak config.
15
     *
16
     * @var Config
17
     */
18
    protected $config;
19
20
    /**
21
     * Construct.
22
     *
23
     * @param Config $config
24
     */
25
    public function __construct(Config $config)
26
    {
27
        $this->config = $config;
28
    }
29
30
    /**
31
     * Create all the directories and files necessary for Yarak DB functions.
32
     */
33
    public function create()
34
    {
35
        $this->createAllDirectories();
36
37
        $this->createFactoriesFile();
38
39
        $this->createSeederFile();
40
    }
41
42
    /**
43
     * Create all needed directories.
44
     */
45
    protected function createAllDirectories()
46
    {
47
        $this->makeDirectoryStructure(
48
            $this->config->getAllDatabaseDirectories()
49
        );
50
51
        $this->log('<info>Created all directories.</info>');
52
    }
53
54
    /**
55
     * Create factory file stub.
56
     */
57
    protected function createFactoriesFile()
58
    {
59
        $stub = file_get_contents(__DIR__.'/Stubs/factory.stub');
60
61
        $this->writeFile(
62
            $this->config->getFactoryDirectory('ModelFactory.php'),
63
            $stub
64
        );
65
66
        $this->log('<info>Created ModelFactory file.</info>');
67
    }
68
69
    /**
70
     * Create seeder file stub.
71
     */
72
    protected function createSeederFile()
73
    {
74
        $stub = file_get_contents(__DIR__.'/Stubs/seeder.stub');
75
76
        $this->writeFile(
77
            $this->config->getSeedDirectory('DatabaseSeeder.php'),
78
            $stub
79
        );
80
81
        $this->log('<info>Created DatabaseSeeder file.</info>');
82
    }
83
}
84