#!/usr/bin/env php * * SPDX-License-Identifier: GPL-3.0-or-later * * FILE INFORMATION * DEFGROUP: moko-platform.CLI * INGROUP: moko-platform * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform * PATH: /cli/version_bump.php * BRIEF: Auto-increment patch version in README.md — outputs old → new */ declare(strict_types=1); $path = '.'; $type = 'patch'; // patch | minor | major foreach ($argv as $i => $arg) { if ($arg === '--path' && isset($argv[$i + 1])) $path = $argv[$i + 1]; if ($arg === '--minor') $type = 'minor'; if ($arg === '--major') $type = 'major'; } $readme = realpath($path) . '/README.md'; if (!file_exists($readme)) { fwrite(STDERR, "No README.md found at {$path}\n"); exit(1); } $content = file_get_contents($readme); if (!preg_match('/^(\s*VERSION:\s*)(\d{2})\.(\d{2})\.(\d{2})/m', $content, $m)) { fwrite(STDERR, "No VERSION field found in README.md\n"); exit(1); } $major = (int)$m[2]; $minor = (int)$m[3]; $patch = (int)$m[4]; $old = sprintf('%02d.%02d.%02d', $major, $minor, $patch); switch ($type) { case 'major': $major++; $minor = 0; $patch = 0; break; case 'minor': $minor++; $patch = 0; break; default: $patch++; if ($patch > 99) { $minor++; $patch = 0; } if ($minor > 99) { $major++; $minor = 0; } break; } $new = sprintf('%02d.%02d.%02d', $major, $minor, $patch); $updated = preg_replace( '/^(\s*VERSION:\s*)\d{2}\.\d{2}\.\d{2}/m', '${1}' . $new, $content, 1 ); file_put_contents($readme, $updated); echo "{$old} → {$new}\n"; exit(0);