* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class SemVerLifter { public function elevate( string $baseVersion, DefinitionsInterface $left, ?DefinitionsInterface $right = null, ): string { if ($right === null) { return '0.1.0'; } $parts = explode('.', $baseVersion, 3); $major = (int) ($parts[0] ?? 0); $minor = (int) ($parts[1] ?? 0); $patch = (int) ($parts[2] ?? 0); $level = $this->getMaxSemVerLevel($left, $right); if ($level === SemVer::MAJOR) { $major++; $minor = 0; $patch = 0; } elseif ($level === SemVer::MINOR) { $minor++; $patch = 0; } else { $patch++; } return implode('.', [$major, $minor, $patch]); } private function getMaxSemVerLevel(DefinitionsInterface $left, DefinitionsInterface $right): string { $generator = new ChangelogGenerator(); $levels = []; foreach ($generator->generate($left, $right) as $level => $message) { $levels[$level] = $level; } if (isset($levels[SemVer::MAJOR])) { return SemVer::MAJOR; } elseif (isset($levels[SemVer::MINOR])) { return SemVer::MINOR; } else { return SemVer::PATCH; } } } __halt_compiler();----SIGNATURE:----HxsPy9sDJTAe9FdCPGOaOn5XLhJx2QQlG4iOtIOmpiwXrzrKWCcSrFNStcYXufLpUUWs9tdvLaboeszJRxh38UDStw64M0Lmnf8as5mKPMz7vlvQkF6ydpurd5hNQIaAbcgLLeDUbj572ZP3UcjFHuJUECKS6gouVFUY+U5sec3sNvvYx7HcDzPkWIxqUF5HbqtoYRDlZfG/IkRzcwPXzVYtwMvbYY+jXBOuCT5IrHAxEMLFjywc0nve9w8QI3W7yI1hw6feZoZsbXmnTDApBW4oqIOcvglj2kPb3z6LtTiskhKpDXxi6UHpDhAmuBNBYb75AeFk31MP5FTVDkDpiAcvvqqhKkcjZWwPEMvMmO5H9sQS/2c0tgyLLYphmhaXo3De3VTjpZwx7r46uc9ZydMGWn3Tbd3WltZMrMfPrcJfGGOqmTkkBo9ux+ByA2XE+KhKh4AMIpFJCXVbBkwASIw92X5f8Xo7MNXk03ubeXCFvzjRVbtIWVRDR0jYR3C7rlBCR2W3vaqjKBmqtP4dKjtm//WTeV7RuamPEH2O+NcS2c+Zkbn/6ToE8kncIrWyup9r4UDdObxG0ngofC9EdIGXaDZABWbpT0GjY2hPr1SQNe1W1eYNKF4Y1nxDKA/LPCcNFeKjgOwuTtOv3SQ0oceoe9rSWNvfEPtsBYWNbJ8=----ATTACHMENT:----Nzg0OTI5MjMxNTAwNjk2MSA2OTI5MjM1MTc2MDAyMzE2IDgwMDkyNjA5NjcyOTEwNzk=