Completed
Push — master ( 328402...1cd18c )
by Julien
587:13 queued 584:54
created

BaseOrchestratorContext   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 101
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 29
dl 0
loc 101
rs 10
c 0
b 0
f 0
wmc 9

9 Methods

Rating   Name   Duplication   Size   Complexity  
A setBaseVirtualHost() 0 3 1
A toMetadata() 0 3 1
A fromArray() 0 8 1
A isSingleEnvironment() 0 3 1
A toArray() 0 6 1
A setSingleEnvironment() 0 3 1
A __construct() 0 5 1
A fromMetadata() 0 8 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
     */
24
    public function __construct(string $environmentType, string $environmentName, string $baseVirtualHost)
25
    {
26
        parent::__construct($environmentType, $environmentName);
27
        $this->baseVirtualHost = $baseVirtualHost;
28
        $this->singleEnvironment = true;
29
    }
30
31
    /**
32
     * @return array<string,mixed>
33
     */
34
    public function toArray(): array
35
    {
36
        $assoc = parent::toArray();
37
        $assoc['BASE_VIRTUAL_HOST'] = $this->baseVirtualHost;
38
        $assoc['IS_SINGLE_ENVIRONMENT'] = $this->singleEnvironment;
39
        return $assoc;
40
    }
41
42
    /**
43
     * @param array<string,mixed> $assoc
44
     * @return mixed
45
     */
46
    public static function fromArray(array $assoc)
47
    {
48
        $context = parent::fromArray($assoc);
49
        $baseVirtualHost = $assoc['BASE_VIRTUAL_HOST'];
50
        $singleEnvironment = (bool)$assoc['IS_SINGLE_ENVIRONMENT'];
51
        $self = new self($context->getEnvironmentType(), $context->getEnvironmentName(), $baseVirtualHost);
52
        $self->setSingleEnvironment($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 = (bool)Aenthill::metadata('IS_SINGLE_ENVIRONMENT');
72
        $self = new self($context->getEnvironmentType(), $context->getEnvironmentName(), $baseVirtualHost);
73
        $self->setSingleEnvironment($singleEnvironment);
74
        return $self;
75
    }
76
77
    /**
78
     * @return string
79
     */
80
    public function getBaseVirtualHost(): string
81
    {
82
        return $this->baseVirtualHost;
83
    }
84
85
    /**
86
     * @param string $baseVirtualHost
87
     * @return void
88
     */
89
    public function setBaseVirtualHost(string $baseVirtualHost): void
90
    {
91
        $this->baseVirtualHost = $baseVirtualHost;
92
    }
93
94
    /**
95
     * @return bool
96
     */
97
    public function isSingleEnvironment(): bool
98
    {
99
        return $this->singleEnvironment;
100
    }
101
102
    /**
103
     * @param bool $singleEnvironment
104
     */
105
    public function setSingleEnvironment(bool $singleEnvironment): void
106
    {
107
        $this->singleEnvironment = $singleEnvironment;
108
    }
109
}
110