#42: Added a Composer update script
This commit is contained in:
parent
502a13b39f
commit
c04e2d286f
146
public/update.php
Normal file
146
public/update.php
Normal file
@ -0,0 +1,146 @@
|
||||
<?php
|
||||
|
||||
namespace BtwInstaller;
|
||||
|
||||
class BlueTwilightUpdater
|
||||
{
|
||||
private $baseDirectory;
|
||||
private $composerSignature;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->baseDirectory = dirname(__DIR__);
|
||||
chdir($this->baseDirectory);
|
||||
putenv('HOME=' . $this->baseDirectory);
|
||||
|
||||
// Display errors so installer never gets a WSOD!
|
||||
ini_set('display_errors', true);
|
||||
}
|
||||
|
||||
public function run()
|
||||
{
|
||||
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST')
|
||||
{
|
||||
// Handle post
|
||||
$this->runUpdate();
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>Blue Twilight Update</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Blue Twilight Update</h1>
|
||||
<p>This update routine ensures your Blue Twilight Composer packages are up-to-date.</p>
|
||||
<p>To get started, simply click the button below.</p>
|
||||
<p style="font-weight: bold; color: #ff0000;">This can take a few minutes so please be patient, and only click the button once!</p>
|
||||
<form method="post">
|
||||
<button type="submit">Update Composer and dependencies for me</button>
|
||||
</form>
|
||||
|
||||
<hr/>
|
||||
<h2>Got Composer?</h2>
|
||||
|
||||
<p>If you already have Composer installed, however, you may want to use that instead. Just run the below commands on your server, changing the path to Composer as appropriate:</p>
|
||||
<p><em>Please note: "composer.phar" may actually be "composer" on your system.</em></p>
|
||||
<pre>
|
||||
cd <?php echo $this->baseDirectory; ?>
|
||||
|
||||
php artisan clear-compiled
|
||||
/path/to/composer.phar install
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
|
||||
private function runUpdate()
|
||||
{
|
||||
|
||||
?>
|
||||
<h1>Updating Blue Twilight Composer packages</h1>
|
||||
|
||||
<ul>
|
||||
<?php
|
||||
$steps = [
|
||||
['Removing compiled cache', 'removeCompiledCached'],
|
||||
['Updating dependencies using Composer', 'runComposer']
|
||||
];
|
||||
|
||||
$successful = true;
|
||||
foreach ($steps as $step)
|
||||
{
|
||||
echo sprintf("<li>%s...</li>%s", $step[0], PHP_EOL);
|
||||
$result = call_user_func([$this, $step[1]]);
|
||||
|
||||
if (!$result)
|
||||
{
|
||||
$successful = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($successful)
|
||||
{
|
||||
header('Location: admin');
|
||||
exit();
|
||||
}
|
||||
|
||||
?>
|
||||
</ul>
|
||||
<?php
|
||||
}
|
||||
|
||||
private function removeCompiledCached()
|
||||
{
|
||||
ob_start();
|
||||
system('php artisan clear-compiled', $rc);
|
||||
$result = ob_get_clean();
|
||||
echo nl2br($result);
|
||||
if ($rc != 0)
|
||||
{
|
||||
$this->echoError('Updating Composer packages failed');
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->echoOK();
|
||||
return true;
|
||||
}
|
||||
|
||||
private function echoError($message)
|
||||
{
|
||||
echo sprintf("<span style=\"color: #ff0000;\">%s.</span>%s", $message, PHP_EOL);
|
||||
}
|
||||
|
||||
private function echoOK($message = '')
|
||||
{
|
||||
echo "<span style=\"color: #008800;\">OK";
|
||||
|
||||
if (strlen($message) > 0)
|
||||
{
|
||||
echo sprintf('... %s', $message);
|
||||
}
|
||||
|
||||
echo '</span>' . PHP_EOL;
|
||||
}
|
||||
|
||||
private function runComposer()
|
||||
{
|
||||
ob_start();
|
||||
system('php composer.phar install', $rc);
|
||||
$result = ob_get_clean();
|
||||
echo nl2br($result);
|
||||
if ($rc != 0)
|
||||
{
|
||||
$this->echoError('Updating Composer packages failed');
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->echoOK();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
$installer = new BlueTwilightUpdater();
|
||||
$installer->run();
|
Loading…
Reference in New Issue
Block a user