BaseOrchestratorContext   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 100
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 27
dl 0
loc 100
rs 10
c 0
b 0
f 0
wmc 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A toMetadata() 0 3 1
A setBaseVirtualHost() 0 3 1
A fromArray() 0 7 1
A isSingleEnvironment() 0 3 1
A toArray() 0 6 2
A setSingleEnvironment() 0 3 1
A __construct() 0 5 1
A fromMetadata() 0 7 1
A getBaseVirtualHost() 0 3 1
1
<?php
2
3
namespace TheAentMachine\Aent\Context;
4
5
use TheAentMachine\Aenthill\Aenthill;
6
7
class BaseOrchestratorContext extends Context
8
{
9
    /** @var string */
10
    private $baseVirtualHost;
11
12
    /** @var bool */
13
    private $singleEnvironment;
14
15
    public const BUILDER_DEPENDENCY_KEY = 'BUILDER';
16
    public const CI_DEPENDENCY_KEY = 'CI';
17
18
    /**
19
     * BaseOrchestratorContext constructor.
20
     * @param string $environmentType
21
     * @param string $environmentName
22
     * @param string $baseVirtualHost
23
     * @param bool $singleEnvironment
24
     */
25
    public function __construct(string $environmentType, string $environmentName, string $baseVirtualHost, bool $singleEnvironment = true)
26
    {
27
        parent::__construct($environmentType, $environmentName);
28
        $this->baseVirtualHost = $baseVirtualHost;
29
        $this->singleEnvironment = $singleEnvironment;
30
    }
31
32
    /**
33
     * @return array<string,mixed>
34
     */
35
    public function toArray(): array
36
    {
37
        $assoc = parent::toArray();
38
        $assoc['BASE_VIRTUAL_HOST'] = $this->baseVirtualHost;
39
        $assoc['IS_SINGLE_ENVIRONMENT'] = $this->singleEnvironment ? 'true' : 'false';
40
        return $assoc;
41
    }
42
43
    /**
44
     * @param array<string,mixed> $assoc
45
     * @return mixed
46
     */
47
    public static function fromArray(array $assoc)
48
    {
49
        $context = parent::fromArray($assoc);
50
        $baseVirtualHost = $assoc['BASE_VIRTUAL_HOST'];
51
        $singleEnvironment = $assoc['IS_SINGLE_ENVIRONMENT'] === 'true';
52
        $self = new self($context->getEnvironmentType(), $context->getEnvironmentName(), $baseVirtualHost, $singleEnvironment);
53
        return $self;
54
    }
55
56
    /**
57
     * @return void
58
     */
59
    public function toMetadata(): void
60
    {
61
        Aenthill::update($this->toArray());
62
    }
63
64
    /**
65
     * @return mixed
66
     */
67
    public static function fromMetadata()
68
    {
69
        $context = parent::fromMetadata();
70
        $baseVirtualHost = Aenthill::metadata('BASE_VIRTUAL_HOST');
71
        $singleEnvironment = Aenthill::metadata('IS_SINGLE_ENVIRONMENT') === 'true';
72
        $self = new self($context->getEnvironmentType(), $context->getEnvironmentName(), $baseVirtualHost, $singleEnvironment);
73
        return $self;
74
    }
75
76
    /**
77
     * @return string
78
     */
79
    public function getBaseVirtualHost(): string
80
    {
81
        return $this->baseVirtualHost;
82
    }
83
84
    /**
85
     * @param string $baseVirtualHost
86
     * @return void
87
     */
88
    public function setBaseVirtualHost(string $baseVirtualHost): void
89
    {
90
        $this->baseVirtualHost = $baseVirtualHost;
91
    }
92
93
    /**
94
     * @return bool
95
     */
96
    public function isSingleEnvironment(): bool
97
    {
98
        return $this->singleEnvironment;
99
    }
100
101
    /**
102
     * @param bool $singleEnvironment
103
     */
104
    public function setSingleEnvironment(bool $singleEnvironment): void
105
    {
106
        $this->singleEnvironment = $singleEnvironment;
107
    }
108
}
109