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