" . PHP_EOL; echo "E.g.,: php {$argv[0]} 4.4.3" . PHP_EOL; exit(1); } // Gets version number from argument. $version = $argv[1]; // e.g., '4.4.3' $versionParts = explode('.', $version); $minor = $versionParts[0] . '.' . $versionParts[1]; // Note: Major version will change someday (4.x..5.x) - update manually. $nextMinor = $versionParts[0] . '.' . $versionParts[1] + 1; // Creates a branch for release. system('git switch develop'); system('git branch -D release-' . $version); system('git switch -c release-' . $version); // Updates version number in "CodeIgniter.php". replace_file_content( './system/CodeIgniter.php', '/public const CI_VERSION = \'.*?\';/u', "public const CI_VERSION = '{$version}';", ); // Updates version number in "conf.py". replace_file_content( './user_guide_src/source/conf.py', '/^version = \'.*?\'/mu', "version = '{$minor}'", ); replace_file_content( './user_guide_src/source/conf.py', '/^release = \'.*?\'/mu', "release = '{$version}'", ); // Updates version number in "phpdoc.dist.xml". replace_file_content( './phpdoc.dist.xml', '!CodeIgniter v.*? API!mu', "CodeIgniter v{$minor} API", ); replace_file_content( './phpdoc.dist.xml', '//mu', "", ); // Updates release date in changelogs. $date = date('F j, Y'); replace_file_content( "./user_guide_src/source/changelogs/v{$version}.rst", '/^Release Date: .*/mu', "Release Date: {$date}", ); // Update appstarter/builds script replace_file_content( './admin/starter/builds', '/define\(\'LATEST_RELEASE\', \'.*?\'\);/mu', "define('LATEST_RELEASE', '^{$minor}');", ); replace_file_content( './admin/starter/builds', '/define\(\'NEXT_MINOR\', \'.*?\'\);/mu', "define('NEXT_MINOR', '^{$nextMinor}-dev');", ); // Commits system('git add -u'); system('git commit -m "Prep for ' . $version . ' release"');