-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVersionRangeService.php
More file actions
83 lines (66 loc) · 2.29 KB
/
Copy pathVersionRangeService.php
File metadata and controls
83 lines (66 loc) · 2.29 KB
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
<?php
declare(strict_types=1);
namespace Gared\EtherScan\Service;
use Gared\EtherScan\Model\VersionRange;
class VersionRangeService
{
/**
* @var list<VersionRange>
*/
private array $versionRanges = [];
private ?string $packageVersion = null;
private ?string $revisionVersion = null;
private ?string $healthVersion = null;
public function calculateVersion(): ?VersionRange
{
if ($this->packageVersion !== null) {
return new VersionRange($this->packageVersion, $this->packageVersion);
}
if ($this->healthVersion !== null) {
return new VersionRange($this->healthVersion, $this->healthVersion);
}
if ($this->revisionVersion !== null) {
return new VersionRange($this->revisionVersion, $this->revisionVersion);
}
if (count($this->versionRanges) === 0) {
return null;
}
$maxVersion = null;
$minVersion = null;
foreach ($this->versionRanges as $version) {
if ($minVersion !== null && $version->getMaxVersion() !== null && version_compare($version->getMaxVersion(), $minVersion, '<')) {
continue;
}
if ($maxVersion === null || version_compare($version->getMaxVersion() ?? '', $maxVersion, '<')) {
$maxVersion = $version->getMaxVersion();
}
if ($minVersion === null || version_compare($version->getMinVersion() ?? '', $minVersion, '>')) {
$minVersion = $version->getMinVersion();
}
}
return new VersionRange($minVersion, $maxVersion);
}
public function setPackageVersion(?string $packageVersion): void
{
$this->packageVersion = $packageVersion;
}
public function getPackageVersion(): ?string
{
return $this->packageVersion;
}
public function setRevisionVersion(?string $revisionVersion): void
{
$this->revisionVersion = $revisionVersion;
}
public function setHealthVersion(?string $healthVersion): void
{
$this->healthVersion = $healthVersion;
}
public function addVersionRange(?VersionRange $versionRange): void
{
if ($versionRange === null) {
return;
}
$this->versionRanges[] = $versionRange;
}
}