* @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:----amPDNdjqelq+4kx+B92UgxfT+JLAqKw6yJ6KwFdl5F4y+Twk2hY6HKXy7ZSBYXS1vNwYpsCY3XEZQZPjZe235VQ3/uyPwZ1QN1xB75Nx0UPWO8NHlLJBYc2LjfSHk8bjSoK0QziFZeQW/AMlsoogWbRD7fgu2FEPgVOYuuIDx7bdxGISq6g9F6aRunqAvs87+mTlVOHtpsoJbVaGE4QPN74e8DcwIOtPzbuEOmzZ9UcuxV/hiQ+4WLNOeO4B7VnE50aYeOqWOGtl500lE+gFcazyV58Qw+eldduqrAk6SVs2XGyEtXhQlukq5ljpnU0WKdqvgq9CnIaCmKgGqigCZq1WQMuhdgOKOUNTnTeZXpKo2LYjZ47mxZ4C1L2Kw5vNHf1n+btyeqZLrSWaxFAIqcqbFLxWL2tqq4hMrbz4iyKgv2BrwN+yTDurtnBm1pyqJjFeri1nhFKrJ+lpdQqLWAZorD/VgG8+3R3mv1tUtFBh0lz8jWp2lXVYchujXMXAQ/aPfNU43DY5k8PqmQIG7gXPduf9jxVb9VG6iph/HJ1ypVjdvFIPRQDPSkKguOXxRpOZrnzz7w8FnxwTcpOhXb7W5znK6Re9QKAM4pJkNYf65YTIvg/hsjLkUQPLLcXd4bRF9g4KlQYT0YON6CRXH26e7bKId5vVxjpcBYNCESc=----ATTACHMENT:----MTE4NzQxNzUwODg4MzkyMSAzOTk0ODc3OTI2ODUyNjkyIDQ2NTQ4OTY2OTAyMzk0MTU=