Welcome Guest, Not a member yet? Register   Sign In
What's builds file for?
#1
Question 

File :: builds

PHP Code:
#!/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
if (empty($argv[1]) || ! in_array($argv[1], ['release''development']))
{
    echo 
'Usage: php builds [release|development]' PHP_EOL;
    exit;
}

$dev $argv[1] == 'development';
$modified = [];

/* Locate each file and update it for the requested stability */

// Composer.json
$file __DIR__ DIRECTORY_SEPARATOR 'composer.json';

if (
is_file($file))
{
    
// Make sure we can read it
    
if ($contents file_get_contents($file))
    {
        if (
$array json_decode($contentstrue))
        {
            
// 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($filejson_encode($arrayJSON_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;
    }
}

// Paths config and PHPUnit XMLs
$files = [
    
__DIR__ DIRECTORY_SEPARATOR 'app/Config/Paths.php',
    
__DIR__ DIRECTORY_SEPARATOR 'phpunit.xml.dist',
    
__DIR__ DIRECTORY_SEPARATOR 'phpunit.xml',
];

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;
    }
}

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;


Learning CI4 from my works, from errors and how to fix bugs in the community

Love CI & Thanks CI Teams

Reply


Messages In This Thread
What's builds file for? - by nc03061981 - 10-03-2020, 03:33 AM
RE: What's builds file for? - by InsiteFX - 10-03-2020, 07:25 AM
RE: What's builds file for? - by nc03061981 - 10-03-2020, 07:39 AM
RE: What's builds file for? - by MGatner - 10-03-2020, 08:49 AM
RE: What's builds file for? - by nc03061981 - 10-03-2020, 09:01 AM



Theme © iAndrew 2016 - Forum software by © MyBB