From 0ba31af0842d975b3bdd62df0d630c99a5f9ffac Mon Sep 17 00:00:00 2001 From: Sven Reichel Date: Sun, 19 Jan 2025 05:04:37 +0100 Subject: [PATCH 1/3] Changed `getOpenMageVersion()` --- app/Mage.php | 73 +-- .../default/template/page/footer.phtml | 4 +- .../openmage/template/page/header.phtml | 2 +- .../default/template/page/html/footer.phtml | 2 +- composer.json | 2 +- composer.lock | 592 +----------------- 6 files changed, 48 insertions(+), 627 deletions(-) diff --git a/app/Mage.php b/app/Mage.php index ec7df4782f2..f6a9abb4e94 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -14,6 +14,8 @@ * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +use Composer\InstalledVersions; + define('DS', DIRECTORY_SEPARATOR); define('PS', PATH_SEPARATOR); define('BP', dirname(__DIR__)); @@ -178,64 +180,65 @@ public static function getVersionInfo() * @link https://openmage.github.io/supported-versions.html * @link https://semver.org/ */ - public static function getOpenMageVersion(): string + public static function getOpenMageVersion(bool $withHas = false): string { - $info = self::getOpenMageVersionInfo(); - $versionString = "{$info['major']}.{$info['minor']}.{$info['patch']}"; - - if ($info['stability'] && $info['number']) { - return "{$versionString}-{$info['stability']}.{$info['number']}"; - } - if ($info['stability']) { - return "{$versionString}-{$info['stability']}"; + $versionfromGit = self::getVersionFromGit($withHas); + if ($versionfromGit) { + return $versionfromGit; } - if ($info['number']) { - return "{$versionString}-{$info['number']}"; + + $versionfromComposer = self::getVersionFromComposer(); + if ($versionfromComposer) { + return $versionfromComposer; } - return $versionString; + return ''; } /** * Gets the detailed OpenMage version information * @link https://openmage.github.io/supported-versions.html * @link https://semver.org/ + * @deprecated */ public static function getOpenMageVersionInfo(): array { - /** - * This code construct is to make merging for forward porting of changes easier. - * By having the version numbers of different branches in own lines, they do not provoke a merge conflict - * also as releases are usually done together, this could in theory be done at once. - * The major Version then needs to be only changed once per branch. - */ - if (self::getOpenMageMajorVersion() === 20) { - return [ - 'major' => '20', - 'minor' => '12', - 'patch' => '0', - 'stability' => '', // beta,alpha,rc - 'number' => '', // 1,2,3,0.3.7,x.7.z.92 @see https://semver.org/#spec-item-9 - ]; - } - - return [ - 'major' => '19', - 'minor' => '5', - 'patch' => '3', - 'stability' => '', // beta,alpha,rc - 'number' => '', // 1,2,3,0.3.7,x.7.z.92 @see https://semver.org/#spec-item-9 - ]; + return explode('.', ltrim(self::getOpenMageVersion(), 'v')); } /** * @return int<19,20> + * @deprecated */ public static function getOpenMageMajorVersion(): int { return 20; } + public static function getVersionFromComposer(): ?string + { + if (!InstalledVersions::isInstalled('openmage/magento-lts')) { + return null; + } + + return InstalledVersions::getVersion('openmage/magento-lts'); + } + + public static function getVersionFromGit(bool $withHas = true): ?string + { + if (!function_exists('exec')) { + return null; + } + + $commitTag = trim(exec('git describe --tags --abbrev=0')); + if (!$withHas) { + return $commitTag; + } + + $commitHash = trim(exec('git log --pretty="%h" -n1 HEAD')); + return sprintf('%s (%s)', $commitTag, $commitHash); + } + /** * Get current Magento edition * diff --git a/app/design/adminhtml/default/default/template/page/footer.phtml b/app/design/adminhtml/default/default/template/page/footer.phtml index e0aced74b9d..e08e736dfea 100644 --- a/app/design/adminhtml/default/default/template/page/footer.phtml +++ b/app/design/adminhtml/default/default/template/page/footer.phtml @@ -22,7 +22,9 @@ __('OpenMage Project') ?> | __('Report Issues') ?>

-__('OpenMage %s', Mage::getOpenMageVersion()) ?> + + __('OpenMage %s', Mage::getOpenMageVersion(true)) ?> +