CreatePackageJsonFile   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 113
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 3
dl 0
loc 113
ccs 0
cts 43
cp 0
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 9 1
A getStub() 0 14 1
A getStubPath() 0 4 1
A getAllDependencies() 0 10 1
A saveJson() 0 9 1
1
<?php namespace Arcanedev\Assets\Pipes\Make;
2
3
use Arcanedev\Assets\Helpers\Stub;
4
use Closure;
5
use Illuminate\Support\Facades\File;
6
7
/**
8
 * Class     CreatePackageJsonFile
9
 *
10
 * @package  Arcanedev\Assets\Pipes\Make
11
 * @author   ARCANEDEV <[email protected]>
12
 */
13
abstract class CreatePackageJsonFile extends AbstractPipe
14
{
15
    /* -----------------------------------------------------------------
16
     |  Properties
17
     | -----------------------------------------------------------------
18
     */
19
20
    /**
21
     * Dependencies for production environment.
22
     *
23
     * @var array
24
     */
25
    protected $dependencies = [];
26
27
    /**
28
     * Dependencies for development environment.
29
     *
30
     * @var array
31
     */
32
    protected $devDependencies = [];
33
34
    /* -----------------------------------------------------------------
35
     |  Main Method
36
     | -----------------------------------------------------------------
37
     */
38
39
    /**
40
     * @param  array     $passable
41
     * @param  \Closure  $next
42
     *
43
     * @return mixed
44
     */
45
    public function handle(array $passable, Closure $next)
46
    {
47
        $this->saveJson($passable['path'].'/package.json', array_merge(
48
            $this->getStub($passable)->toArray(),
49
            $this->getAllDependencies()
50
        ));
51
52
        return $next($passable);
53
    }
54
55
    /* -----------------------------------------------------------------
56
     |  Other Methods
57
     | -----------------------------------------------------------------
58
     */
59
60
    /**
61
     * Get the stub for the `package.json` file.
62
     *
63
     * @param  array  $passable
64
     *
65
     * @return \Arcanedev\Assets\Helpers\Stub
66
     */
67
    protected function getStub(array $passable)
68
    {
69
        return Stub::make(static::getStubPath($passable))
70
            ->replace(
71
                [
72
                    '{{root}}',
73
                    '{{name}}',
74
                ],
75
                [
76
                    $passable['root-package'],
77
                    $passable['name'],
78
                ]
79
            );
80
    }
81
82
    /**
83
     * @param  array  $passable
84
     *
85
     * @return string
86
     */
87
    protected function getStubPath(array $passable)
0 ignored issues
show
Unused Code introduced by
The parameter $passable is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
88
    {
89
        return 'module/package.stub';
90
    }
91
92
    /**
93
     * Get all dependencies.
94
     *
95
     * @return array
96
     */
97
    protected function getAllDependencies()
98
    {
99
        ksort($this->dependencies);
100
        ksort($this->devDependencies);
101
102
        return array_filter([
103
            'dependencies'    => $this->dependencies,
104
            'devDependencies' => $this->devDependencies,
105
        ]);
106
    }
107
108
    /**
109
     * Save the content as a json file.
110
     *
111
     * @param  string  $path
112
     * @param  array   $content
113
     *
114
     * @return int
115
     */
116
    protected function saveJson($path, array $content)
117
    {
118
        $content = array_filter($content);
119
120
        return File::put(
121
            base_path($path),
122
            json_encode($content, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) . PHP_EOL
123
        );
124
    }
125
}
126