Add a helper method to increment versions [MAILPOET-1869]
This commit is contained in:
@ -38,40 +38,38 @@ class ReleaseVersionController {
|
|||||||
|
|
||||||
function determineNextVersion() {
|
function determineNextVersion() {
|
||||||
$last_version = $this->jira->getLastReleasedVersion();
|
$last_version = $this->jira->getLastReleasedVersion();
|
||||||
$parsed_last_version = VersionHelper::parseVersion($last_version['name']);
|
|
||||||
|
|
||||||
$version_to_increment = VersionHelper::PATCH;
|
$part_to_increment = VersionHelper::PATCH;
|
||||||
|
|
||||||
if ($this->project === JiraController::PROJECT_MAILPOET) {
|
if ($this->project === JiraController::PROJECT_MAILPOET) {
|
||||||
$free_increment = $this->checkProjectVersionIncrement(JiraController::PROJECT_MAILPOET);
|
$free_increment = $this->checkProjectVersionIncrement(JiraController::PROJECT_MAILPOET);
|
||||||
$premium_increment = $this->checkProjectVersionIncrement(JiraController::PROJECT_PREMIUM);
|
$premium_increment = $this->checkProjectVersionIncrement(JiraController::PROJECT_PREMIUM);
|
||||||
|
|
||||||
if (in_array(VersionHelper::MINOR, [$free_increment, $premium_increment])) {
|
if (in_array(VersionHelper::MINOR, [$free_increment, $premium_increment])) {
|
||||||
$version_to_increment = VersionHelper::MINOR;
|
$part_to_increment = VersionHelper::MINOR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$parsed_last_version[$version_to_increment]++;
|
$next_version = VersionHelper::incrementVersion($last_version['name'], $part_to_increment);
|
||||||
$next_version = VersionHelper::buildVersion($parsed_last_version);
|
|
||||||
return $next_version;
|
return $next_version;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function checkProjectVersionIncrement($project) {
|
private function checkProjectVersionIncrement($project) {
|
||||||
$issues = $this->getUnreleasedDoneIssues($project);
|
$issues = $this->getUnreleasedDoneIssues($project);
|
||||||
|
|
||||||
$version_to_increment = VersionHelper::PATCH;
|
$part_to_increment = VersionHelper::PATCH;
|
||||||
$field_id = JiraController::VERSION_INCREMENT_FIELD_ID;
|
$field_id = JiraController::VERSION_INCREMENT_FIELD_ID;
|
||||||
|
|
||||||
foreach ($issues as $issue) {
|
foreach ($issues as $issue) {
|
||||||
if (!empty($issue['fields'][$field_id]['value'])
|
if (!empty($issue['fields'][$field_id]['value'])
|
||||||
&& $issue['fields'][$field_id]['value'] === VersionHelper::MINOR
|
&& $issue['fields'][$field_id]['value'] === VersionHelper::MINOR
|
||||||
) {
|
) {
|
||||||
$version_to_increment = VersionHelper::MINOR;
|
$part_to_increment = VersionHelper::MINOR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $version_to_increment;
|
return $part_to_increment;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getUnreleasedDoneIssues($project = null) {
|
private function getUnreleasedDoneIssues($project = null) {
|
||||||
|
@ -9,6 +9,23 @@ class VersionHelper {
|
|||||||
const MINOR = 'Minor';
|
const MINOR = 'Minor';
|
||||||
const PATCH = 'Patch';
|
const PATCH = 'Patch';
|
||||||
|
|
||||||
|
static function incrementVersion($version, $part_to_increment = self::PATCH) {
|
||||||
|
$parsed_version = is_array($version) ? $version : self::parseVersion($version);
|
||||||
|
|
||||||
|
switch ($part_to_increment) {
|
||||||
|
case self::MINOR:
|
||||||
|
$parsed_version[self::MINOR]++;
|
||||||
|
$parsed_version[self::PATCH] = 0;
|
||||||
|
break;
|
||||||
|
case self::PATCH:
|
||||||
|
default:
|
||||||
|
$parsed_version[self::PATCH]++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return is_array($version) ? $parsed_version : self::buildVersion($parsed_version);
|
||||||
|
}
|
||||||
|
|
||||||
static function parseVersion($version) {
|
static function parseVersion($version) {
|
||||||
if (!preg_match(self::VERSION_REGEXP, $version, $matches)) {
|
if (!preg_match(self::VERSION_REGEXP, $version, $matches)) {
|
||||||
throw new \Exception('Incorrect version format');
|
throw new \Exception('Incorrect version format');
|
||||||
|
Reference in New Issue
Block a user