Passed
Pull Request — master (#73)
by Keoghan
03:23
created

YamlBuilder::renderDockerComposeFile()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 13
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 13
ccs 12
cts 12
cp 1
rs 9.9
c 0
b 0
f 0
cc 2
nc 1
nop 1
crap 2
1
<?php
2
3
namespace App\Support\Console\DockerCompose;
4
5
use App\Models\PhpVersion;
6
use App\PorterLibrary;
7
use App\Support\Contracts\ImageRepository;
8
use Illuminate\Filesystem\Filesystem;
9
10
class YamlBuilder
11
{
12
    /** @var Filesystem */
13
    protected $files;
14
15
    /** @var PorterLibrary */
16
    private $porterLibrary;
17
18 155
    public function __construct(Filesystem $files, PorterLibrary $porterLibrary)
19
    {
20 155
        $this->files = $files;
21 155
        $this->porterLibrary = $porterLibrary;
22 155
    }
23
24
    /**
25
     * Build the docker-compose.yaml file.
26
     *
27
     * @param $imageSet
28
     *
29
     * @throws \Throwable
30
     */
31 8
    public function build(ImageRepository $imageSet)
32
    {
33 8
        $this->files->put(
34 8
            $this->porterLibrary->dockerComposeFile(),
35 8
            $this->renderDockerComposeFile($imageSet)
36
        );
37 8
    }
38
39
    /**
40
     * Render the docker compose file
41
     *
42
     * @param  ImageRepository  $imageSet
43
     *
44
     * @return string
45
     * @throws \Throwable
46
     */
47 12
    public function renderDockerComposeFile(ImageRepository $imageSet)
48
    {
49 12
        return view("{$imageSet->getName()}::base")->with([
50 12
            'home'              => setting('home'),
51 12
            'host_machine_name' => setting('host_machine_name'),
52 12
            'activePhpVersions' => PhpVersion::active()->get(),
53 12
            'useMysql'          => setting('use_mysql') === 'on',
54 12
            'useRedis'          => setting('use_redis') === 'on',
55 12
            'useBrowser'        => setting('use_browser') === 'on',
56 12
            'useDns'            => setting('use_dns') === 'on' || setting_missing('use_dns'),
57 12
            'imageSet'          => $imageSet,
58 12
            'libraryPath'       => $this->porterLibrary->path(),
59 12
        ])->render();
60
    }
61
62
    /**
63
     * Destroy the docker-compose.yaml file.
64
     */
65 1
    public function destroy()
66
    {
67 1
        $this->files->delete($this->porterLibrary->dockerComposeFile());
68 1
    }
69
}
70