Test Failed
Push — main ( 90c683...64b5d5 )
by Daniel
03:10
created

InputOutputHardware::getHardwareInfo()   B

Complexity

Conditions 6
Paths 2

Size

Total Lines 27
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 6
eloc 20
c 1
b 0
f 1
nc 2
nop 1
dl 0
loc 27
rs 8.9777
1
<?php
2
3
/*
4
 * The MIT License
5
 *
6
 * Copyright 2024 E303778.
7
 *
8
 * Permission is hereby granted, free of charge, to any person obtaining a copy
9
 * of this software and associated documentation files (the "Software"), to deal
10
 * in the Software without restriction, including without limitation the rights
11
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
 * copies of the Software, and to permit persons to whom the Software is
13
 * furnished to do so, subject to the following conditions:
14
 *
15
 * The above copyright notice and this permission notice shall be included in
16
 * all copies or substantial portions of the Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
 * THE SOFTWARE.
25
 */
26
27
namespace danielgp\io_operations;
28
29
trait InputOutputHardware
30
{
31
32
    use \danielgp\io_operations\InputOutputFiles;
33
34
    private function getCommandsForCurrentOperatingSystem(): array
35
    {
36
        $arrayWhatMapping = $this->getArrayFromJsonFile(__DIR__ . '/json', 'Hardware.json');
37
        if (!array_key_exists(PHP_OS_FAMILY, $arrayWhatMapping)) {
38
            \PHPUnit\Framework\throwException(PHP_OS_FAMILY . ' not covered yet...');
0 ignored issues
show
Bug introduced by
danielgp\io_operations\P.... ' not covered yet...' of type string is incompatible with the type Throwable expected by parameter $exception of PHPUnit\Framework\throwException(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

38
            \PHPUnit\Framework\throwException(/** @scrutinizer ignore-type */ PHP_OS_FAMILY . ' not covered yet...');
Loading history...
39
        }
40
        return $arrayWhatMapping[PHP_OS_FAMILY];
41
    }
42
43
    private function getHardwareInfo(string $strWhat): array
44
    {
45
        $arrayWhatMapping = $this->getCommandsForCurrentOperatingSystem();
46
        $arrayOutput      = [];
47
        if (function_exists('shell_exec')) {
48
            $strFeedback = trim(shell_exec($arrayWhatMapping[$strWhat]));
49
            $arrayPieces = explode("\r\n", $strFeedback);
50
            $intCounter  = 0;
51
            $intLine     = 0;
52
            foreach ($arrayPieces as $strPiece) {
53
                if ($strPiece == '') {
54
                    $intLine++;
55
                } else {
56
                    $intLine = 0;
57
                }
58
                if ($intLine == 2) {
59
                    $intCounter++;
60
                }
61
                if ($strPiece !== '') {
62
                    $arrayP                               = explode('=', $strPiece);
63
                    $arrayOutput[$intCounter][$arrayP[0]] = $arrayP[1];
64
                }
65
            }
66
        } else {
67
            $arrayOutput[] = 'Command execution not possible.';
68
        }
69
        return $arrayOutput;
70
    }
71
}
72