2020-05-27 18:46:16 +02:00
|
|
|
#!/usr/bin/env php
|
|
|
|
<?php
|
|
|
|
define('LATEST_RELEASE', '^4.0');
|
|
|
|
define('GITHUB_URL', 'https://github.com/codeigniter4/codeigniter4');
|
|
|
|
|
|
|
|
/*
|
|
|
|
* --------------------------------------------------------------------
|
|
|
|
* Stability Toggle
|
|
|
|
* --------------------------------------------------------------------
|
|
|
|
* Use this script to toggle the CodeIgniter dependency between the
|
|
|
|
* latest stable release and the most recent development update.
|
|
|
|
*
|
|
|
|
* Usage: php builds [release|development]
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Determine the requested stability
|
2020-06-10 15:00:12 +00:00
|
|
|
if (empty($argv[1]) || !in_array($argv[1], ['release', 'development'])) {
|
|
|
|
echo 'Usage: php builds [release|development]' . PHP_EOL;
|
|
|
|
exit();
|
2020-05-27 18:46:16 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
$dev = $argv[1] == 'development';
|
|
|
|
$modified = [];
|
|
|
|
|
|
|
|
/* Locate each file and update it for the requested stability */
|
|
|
|
|
|
|
|
// Composer.json
|
|
|
|
$file = __DIR__ . DIRECTORY_SEPARATOR . 'composer.json';
|
|
|
|
|
2020-06-10 15:00:12 +00:00
|
|
|
if (is_file($file)) {
|
|
|
|
// Make sure we can read it
|
|
|
|
if ($contents = file_get_contents($file)) {
|
|
|
|
if ($array = json_decode($contents, true)) {
|
|
|
|
// Development
|
|
|
|
if ($dev) {
|
|
|
|
// Set 'minimum-stability'
|
|
|
|
$array['minimum-stability'] = 'dev';
|
|
|
|
$array['prefer-stable'] = true;
|
|
|
|
|
|
|
|
// Make sure the repo is configured
|
|
|
|
if (!isset($array['repositories'])) {
|
|
|
|
$array['repositories'] = [];
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check for the CodeIgniter repo
|
|
|
|
$found = false;
|
|
|
|
foreach ($array['repositories'] as $repository) {
|
|
|
|
if ($repository['url'] == GITHUB_URL) {
|
|
|
|
$found = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Add the repo if it was not found
|
|
|
|
if (!$found) {
|
|
|
|
$array['repositories'][] = [
|
|
|
|
'type' => 'vcs',
|
|
|
|
'url' => GITHUB_URL,
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
// Define the "require"
|
|
|
|
$array['require']['codeigniter4/codeigniter4'] = 'dev-develop';
|
|
|
|
unset($array['require']['codeigniter4/framework']);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Release
|
|
|
|
else {
|
|
|
|
// Clear 'minimum-stability'
|
|
|
|
unset($array['minimum-stability']);
|
|
|
|
|
|
|
|
// If the repo is configured then clear it
|
|
|
|
if (isset($array['repositories'])) {
|
|
|
|
// Check for the CodeIgniter repo
|
|
|
|
foreach ($array['repositories'] as $i => $repository) {
|
|
|
|
if ($repository['url'] == GITHUB_URL) {
|
|
|
|
unset($array['repositories'][$i]);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (empty($array['repositories'])) {
|
|
|
|
unset($array['repositories']);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Define the "require"
|
|
|
|
$array['require']['codeigniter4/framework'] = LATEST_RELEASE;
|
|
|
|
unset($array['require']['codeigniter4/codeigniter4']);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Write out a new composer.json
|
|
|
|
file_put_contents(
|
|
|
|
$file,
|
|
|
|
json_encode(
|
|
|
|
$array,
|
|
|
|
JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
|
|
|
|
) . PHP_EOL
|
|
|
|
);
|
|
|
|
$modified[] = $file;
|
|
|
|
} else {
|
|
|
|
echo 'Warning: Unable to decode composer.json! Skipping...' .
|
|
|
|
PHP_EOL;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
echo 'Warning: Unable to read composer.json! Skipping...' . PHP_EOL;
|
|
|
|
}
|
2020-05-27 18:46:16 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Paths config and PHPUnit XMLs
|
|
|
|
$files = [
|
2020-06-10 15:00:12 +00:00
|
|
|
__DIR__ . DIRECTORY_SEPARATOR . 'app/Config/Paths.php',
|
|
|
|
__DIR__ . DIRECTORY_SEPARATOR . 'phpunit.xml.dist',
|
|
|
|
__DIR__ . DIRECTORY_SEPARATOR . 'phpunit.xml',
|
2020-05-27 18:46:16 +02:00
|
|
|
];
|
|
|
|
|
2020-06-10 15:00:12 +00:00
|
|
|
foreach ($files as $file) {
|
|
|
|
if (is_file($file)) {
|
|
|
|
$contents = file_get_contents($file);
|
|
|
|
|
|
|
|
// Development
|
|
|
|
if ($dev) {
|
|
|
|
$contents = str_replace(
|
|
|
|
'vendor/codeigniter4/framework',
|
|
|
|
'vendor/codeigniter4/codeigniter4',
|
|
|
|
$contents
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Release
|
|
|
|
else {
|
|
|
|
$contents = str_replace(
|
|
|
|
'vendor/codeigniter4/codeigniter4',
|
|
|
|
'vendor/codeigniter4/framework',
|
|
|
|
$contents
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
file_put_contents($file, $contents);
|
|
|
|
$modified[] = $file;
|
|
|
|
}
|
2020-05-27 18:46:16 +02:00
|
|
|
}
|
|
|
|
|
2020-06-10 15:00:12 +00:00
|
|
|
if (empty($modified)) {
|
|
|
|
echo 'No files modified' . PHP_EOL;
|
|
|
|
} else {
|
|
|
|
echo 'The following files were modified:' . PHP_EOL;
|
|
|
|
foreach ($modified as $file) {
|
|
|
|
echo " * {$file}" . PHP_EOL;
|
|
|
|
}
|
|
|
|
echo 'Run `composer update` to sync changes with your vendor folder' .
|
|
|
|
PHP_EOL;
|
2020-05-27 18:46:16 +02:00
|
|
|
}
|
2020-06-10 15:00:12 +00:00
|
|
|
|