Files
piratepoet/tasks/release/VersionHelper.php
Jan Jakeš 54549ff037 Convert variable names to camel case
[MAILPOET-1796]
2020-01-14 15:22:42 +01:00

52 lines
1.4 KiB
PHP

<?php
namespace MailPoetTasks\Release;
class VersionHelper {
const VERSION_REGEXP = '/^(\d+)\.(\d+)\.(\d+)$/';
const MAJOR = 'Major';
const MINOR = 'Minor';
const PATCH = 'Patch';
public static function incrementVersion($version, $partToIncrement = self::PATCH) {
$parsedVersion = is_array($version) ? $version : self::parseVersion($version);
switch ($partToIncrement) {
case self::MINOR:
$parsedVersion[self::MINOR]++;
$parsedVersion[self::PATCH] = 0;
break;
case self::PATCH:
default:
$parsedVersion[self::PATCH]++;
break;
}
return is_array($version) ? $parsedVersion : self::buildVersion($parsedVersion);
}
public static function parseVersion($version) {
if (!preg_match(self::VERSION_REGEXP, $version, $matches)) {
throw new \Exception('Incorrect version format');
}
return [
self::MAJOR => $matches[1],
self::MINOR => $matches[2],
self::PATCH => $matches[3],
];
}
public static function buildVersion(array $parts) {
return sprintf('%d.%d.%d', $parts[self::MAJOR], $parts[self::MINOR], $parts[self::PATCH]);
}
public static function buildMinorVersion(array $parts) {
return sprintf('%d.%d', $parts[self::MAJOR], $parts[self::MINOR]);
}
public static function validateVersion($version) {
return preg_match(self::VERSION_REGEXP, $version);
}
}