Context   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 62
c 0
b 0
f 0
dl 0
loc 90
rs 10
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A getOperationSystemName() 0 49 2
A getOperationSystemTypeCode() 0 10 1
A getOperationSystemFamily() 0 19 2
1
<?php
2
/**
3
 * Copyright © Vaimo Group. All rights reserved.
4
 * See LICENSE_VAIMO.txt for license details.
5
 */
6
namespace Vaimo\ComposerPatches\Config;
7
8
// phpcs:disable PSR1.Files.SideEffects.FoundWithSymbols
9
if (!class_exists('loophp\phposinfo\OsInfo') && class_exists('drupol\phposinfo\OsInfo')) {
10
    class_alias('drupol\phposinfo\OsInfo', 'loophp\phposinfo\OsInfo');
11
    class_alias('drupol\phposinfo\OsInfoInterface', 'loophp\phposinfo\OsInfoInterface');
12
    class_alias('drupol\phposinfo\Enum\Enum', 'loophp\phposinfo\Enum\Enum');
13
    class_alias('drupol\phposinfo\Enum\Family', 'loophp\phposinfo\Enum\Family');
14
    class_alias('drupol\phposinfo\Enum\FamilyName', 'loophp\phposinfo\Enum\FamilyName');
15
    class_alias('drupol\phposinfo\Enum\Os', 'loophp\phposinfo\Enum\Os');
16
    class_alias('drupol\phposinfo\Enum\OsName', 'loophp\phposinfo\Enum\OsName');
17
}
18
19
use loophp\phposinfo\OsInfo;
20
use loophp\phposinfo\Enum\OsName;
21
use loophp\phposinfo\Enum\FamilyName;
22
23
class Context
24
{
25
    public function __construct()
26
    {
27
        OsInfo::register();
28
    }
29
30
    public function getOperationSystemTypeCode()
31
    {
32
        return preg_replace(
33
            '/-+/',
34
            '-',
35
            trim(preg_replace(
36
                '/[^A-Za-z0-9\-]/',
37
                '-',
38
                strtolower(OsInfo::os())
39
            ), '-')
40
        );
41
    }
42
43
    public function getOperationSystemName()
44
    {
45
        $typeId = OsInfo::os();
46
47
        $labels = array(
48
            OsName::DARWIN => 'mac',
49
            OsName::AIX => 'unix',
50
            OsName::GNU => 'unix',
51
            OsName::HPUX => 'unix',
52
            OsName::MINIX => 'unix',
53
            OsName::OSF1 => 'unix',
54
            OsName::QNX => 'unix',
55
            OsName::RELIANTUNIXY => 'unix',
56
            OsName::SCOSV => 'unix',
57
            OsName::SINIXY => 'unix',
58
            OsName::ULTRIX => 'unix',
59
            OsName::UNIXWARE => 'unix',
60
            OsName::UWIN => 'unix',
61
            OsName::UWINW7 => 'unix',
62
            OsName::ZOS => 'zos',
63
            OsName::DEBIANFREEBSD => 'bsd',
64
            OsName::FREEBSD => 'bsd',
65
            OsName::GNUFREEBSD => 'bsd',
66
            OsName::GNUKFREEBSD => 'bsd',
67
            OsName::NETBSD => 'bsd',
68
            OsName::OPENBSD => 'bsd',
69
            OsName::DRAGONFLY => 'bsd',
70
            OsName::GNULINUX => 'linux',
71
            OsName::LINUX => 'linux',
72
            OsName::WIN32 => 'windows',
73
            OsName::WINDOWS => 'windows',
74
            OsName::WINDOWSNT => 'windows',
75
            OsName::WINNT => 'windows',
76
            OsName::SOLARIS => 'solaris',
77
            OsName::SUNOS => 'sun',
78
            OsName::CYGWIN => 'cygwin',
79
            OsName::CYGWINNT51 => 'cygwin',
80
            OsName::CYGWINNT61 => 'cygwin',
81
            OsName::CYGWINNT61WOW64 => 'cygwin',
82
            OsName::MINGW => 'mingw',
83
            OsName::MINGW32NT61 => 'mingw',
84
            OsName::MSYSNT61 => 'mingw'
85
        );
86
87
        if (isset($labels[$typeId])) {
88
            return $labels[$typeId];
89
        }
90
91
        return '';
92
    }
93
94
    public function getOperationSystemFamily()
95
    {
96
        // @codingStandardsIgnoreStart
97
        $familyId = OsInfo::family(); // phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions
98
        // @codingStandardsIgnoreEnd
99
100
        $labels = array(
101
            FamilyName::BSD => 'unix',
102
            FamilyName::DARWIN => 'unix',
103
            FamilyName::LINUX => 'unix',
104
            FamilyName::WINDOWS => 'windows',
105
            FamilyName::UNIX_ON_WINDOWS => 'windows-unix'
106
        );
107
108
        if (isset($labels[$familyId])) {
109
            return $labels[$familyId];
110
        }
111
112
        return '';
113
    }
114
}
115