1d87be7d5e
Branch Policy Check / Verify merge target (pull_request) Successful in 1s
- Update REPO: from MokoStandards-API to moko-platform in 125 files - Fix wrong org path (mokoconsulting-tech → MokoConsulting) in 10 files - Fix SPDX-LICENSE-IDENTIFIER case in 2 template files - Add missing REPO: field to 3 files Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
119 lines
3.7 KiB
PHP
119 lines
3.7 KiB
PHP
#!/usr/bin/env php
|
|
<?php
|
|
/* Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
|
*
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*
|
|
* FILE INFORMATION
|
|
* DEFGROUP: MokoStandards.CLI
|
|
* INGROUP: MokoStandards
|
|
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
|
|
* PATH: /cli/version_set_platform.php
|
|
* BRIEF: Set version in platform-specific files (Dolibarr $this->version, Joomla <version>)
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
$path = '.';
|
|
$version = null;
|
|
$branch = null;
|
|
foreach ($argv as $i => $arg) {
|
|
if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1];
|
|
if ($arg === '--version' && isset($argv[$i + 1])) $version = $argv[$i + 1];
|
|
if ($arg === '--branch' && isset($argv[$i + 1])) $branch = $argv[$i + 1];
|
|
}
|
|
|
|
// Auto-detect branch from git or GitHub env
|
|
if ($branch === null) {
|
|
$branch = trim((string) @shell_exec('git rev-parse --abbrev-ref HEAD 2>/dev/null'));
|
|
if (empty($branch) || $branch === 'HEAD') {
|
|
$branch = getenv('GITHUB_REF_NAME') ?: 'main';
|
|
}
|
|
}
|
|
|
|
if ($version === null) {
|
|
fwrite(STDERR, "Usage: version_set_platform.php --path . --version development\n");
|
|
exit(1);
|
|
}
|
|
|
|
$root = realpath($path) ?: $path;
|
|
|
|
// Detect platform
|
|
$platform = '';
|
|
$mokoStandards = "{$root}/.github/.mokostandards";
|
|
if (!file_exists($mokoStandards)) {
|
|
$mokoStandards = "{$root}/.mokostandards";
|
|
}
|
|
if (file_exists($mokoStandards)) {
|
|
$content = file_get_contents($mokoStandards);
|
|
if (preg_match('/^platform:\s*(.+)/m', $content, $m)) {
|
|
$platform = trim($m[1], " \t\n\r\"'");
|
|
}
|
|
}
|
|
|
|
$changed = 0;
|
|
|
|
// Dolibarr: $this->version + $this->url_last_version in mod*.class.php
|
|
if ($platform === 'crm-module') {
|
|
$pattern = "{$root}/src/core/modules/mod*.class.php";
|
|
foreach (glob($pattern) ?: [] as $file) {
|
|
$content = file_get_contents($file);
|
|
|
|
// Set $this->version
|
|
$updated = preg_replace(
|
|
'/(\$this->version\s*=\s*)[\'"][^\'"]*[\'"]/',
|
|
"\${1}'{$version}'",
|
|
$content
|
|
);
|
|
|
|
// Rewrite $this->url_last_version to point to current branch
|
|
if (preg_match('/\$this->url_last_version\s*=\s*[\'"]([^\'"]+)[\'"]/', $updated, $urlMatch)) {
|
|
$oldUrl = $urlMatch[1];
|
|
// Replace the branch segment: .../BRANCH/update.txt
|
|
$newUrl = preg_replace(
|
|
'#(raw\.githubusercontent\.com/[^/]+/[^/]+/)[^/]+(/update\.json)#',
|
|
"\${1}{$branch}\${2}",
|
|
$oldUrl
|
|
);
|
|
if ($newUrl !== $oldUrl) {
|
|
$updated = str_replace($oldUrl, $newUrl, $updated);
|
|
echo "Dolibarr: url_last_version → {$branch}/update.txt\n";
|
|
}
|
|
}
|
|
|
|
if ($updated !== $content) {
|
|
file_put_contents($file, $updated);
|
|
echo "Dolibarr: " . basename($file) . " → version={$version}, branch={$branch}\n";
|
|
$changed++;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Joomla: <version> in XML manifests
|
|
if ($platform === 'waas-component') {
|
|
foreach (glob("{$root}/src/*.xml") ?: glob("{$root}/*.xml") ?: [] as $file) {
|
|
$content = file_get_contents($file);
|
|
if (!str_contains($content, '<extension')) continue;
|
|
$updated = preg_replace(
|
|
'|<version>[^<]*</version>|',
|
|
"<version>{$version}</version>",
|
|
$content
|
|
);
|
|
if ($updated !== $content) {
|
|
file_put_contents($file, $updated);
|
|
echo "Joomla: " . basename($file) . " → {$version}\n";
|
|
$changed++;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($changed === 0) {
|
|
if (empty($platform)) {
|
|
echo "No .mokostandards file — skipping platform version set\n";
|
|
} else {
|
|
echo "No platform-specific version files found for {$platform}\n";
|
|
}
|
|
}
|
|
|
|
exit(0);
|