Failed Conditions
Pull Request — develop (#9)
by
unknown
02:29
created

src/FileHandle.php (1 issue)

1
<?php
2
3
namespace Maristela\Cli;
4
5
class FileHandle
6
{
7
    public function write(string $file, string $content, string $dir)
8
    {
9
        if (!is_dir($dir)) {
10
            mkdir($dir, 0755);
11
        }
12
13
        $fileName = $this->getComponentName($file);
14
15
        file_put_contents("{$dir}/{$fileName}.html", $content);
16
    }
17
18
    public function getMockData(string $file) : array
19
    {
20
        $fileInfo = $this->getFileInfo($file);
21
        $mockFile = "{$fileInfo['dirname']}/mock.json";
22
23
        if (!file_exists($mockFile)) {
24
            throw new \InvalidArgumentException('The mock.json must be at same level of php file.');
25
        }
26
27
        $data = json_decode(file_get_contents($mockFile), true);
28
29
        if (empty($data)) {
30
            throw new \InvalidArgumentException('Invalid mock.json!');
31
        }
32
33
        return $data;
34
    }
35
36
    public function getComponentName(string $file) : string
37
    {
38
        $fileInfo = $this->getFileInfo($file);
39
        return basename($fileInfo['dirname']);
40
    }
41
42
    protected function getFileInfo(string $file) : array
43
    {
44
        if (!file_exists($file)) {
45
            throw new \InvalidArgumentException("File: {$file} does not exists!");
46
        }
47
48
        $fileInfo = pathinfo($file);
49
50
        if ($fileInfo['extension'] !== 'php') {
51
            throw new \InvalidArgumentException('File need to be a php!');
52
        }
53
54
        return $fileInfo;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $fileInfo could return the type string which is incompatible with the type-hinted return array. Consider adding an additional type-check to rule them out.
Loading history...
55
    }
56
}
57