Completed
Push — dev ( d0b24b...3e90e1 )
by Gaige
04:11
created

ManifestBuilder::buildAssets()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
nc 3
nop 0
dl 0
loc 21
rs 9.584
c 0
b 0
f 0
1
<?php
2
3
4
namespace ExoUNX\Vasri;
5
6
use ExoUNX\Vasri\ManifestReader;
7
use Exception;
8
9
/**
10
 * Constructs Manifest
11
 * Class ManifestBuilder
12
 *
13
 * @package ExoUNX\Vasri
14
 * @author  Gaige Lama <[email protected]>
15
 * @license MIT License
16
 * @link    https://github.com/ExoUNX/Vasri
17
 */
18
class ManifestBuilder
19
{
20
21
    /**
22
     * @var
23
     */
24
    private $mixManifest;
25
26
    /**
27
     * @var \ExoUNX\Vasri\ManifestReader
28
     */
29
    private $manifestReader;
30
31
    /**
32
     * ManifestBuilder constructor.
33
     */
34
    public function __construct()
35
    {
36
        $this->mixManifest    = config('vasri.mix-manifest');
37
        $this->manifestReader = $this->loadManifestReader();
38
    }
39
40
    /**
41
     * @return array
42
     * @throws Exception
43
     */
44
    private function buildAssets(): array
45
    {
46
        $vasriManifest = [];
47
        if ($this->mixManifest === true) {
48
            $manifest = $this->manifestReader->getMixManifest();
49
            foreach ($manifest as $key => $val) {
50
                $vasriManifest[] = $key;
51
            }
52
53
        } elseif ( ! empty(config('vasri.assets'))) {
54
55
            $vasriManifest = config('vasri.assets');
56
57
        } else {
58
59
            throw new Exception('No manifest or assets found');
60
61
        }
62
63
        return $vasriManifest;
64
    }
65
66
    /**
67
     * @throws Exception
68
     */
69
    public function buildManifest(): void
70
    {
71
        file_put_contents(base_path('vasri-manifest.json'),
72
            stripslashes(json_encode($this->buildAssets(), JSON_PRETTY_PRINT)));
73
    }
74
75
    /**
76
     * @return \ExoUNX\Vasri\ManifestReader
77
     */
78
    private function loadManifestReader(): ManifestReader
79
    {
80
        return new ManifestReader();
81
    }
82
83
}
84