mirror of
https://github.com/laravel/valet.git
synced 2026-02-06 00:40:06 +01:00
Fixes #635 by detecting if the config directory is in the old location and moving it immediately when running any Valet command.
184 lines
3.5 KiB
PHP
184 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace Valet;
|
|
|
|
use Illuminate\Container\Container;
|
|
use Symfony\Component\Process\Process;
|
|
use Symfony\Component\Console\Output\ConsoleOutput;
|
|
use Symfony\Component\Console\Helper\Table;
|
|
|
|
/**
|
|
* Define the ~/.config/valet path as a constant.
|
|
*/
|
|
define('VALET_HOME_PATH', $_SERVER['HOME'].'/.config/valet');
|
|
define('VALET_SERVER_PATH', realpath(__DIR__ . '/../../server.php'));
|
|
define('VALET_STATIC_PREFIX', '41c270e4-5535-4daa-b23e-c269744c2f45');
|
|
|
|
define('VALET_LEGACY_HOME_PATH', $_SERVER['HOME'].'/.valet');
|
|
|
|
/**
|
|
* Output the given text to the console.
|
|
*
|
|
* @param string $output
|
|
* @return void
|
|
*/
|
|
function info($output)
|
|
{
|
|
output('<info>'.$output.'</info>');
|
|
}
|
|
|
|
/**
|
|
* Output the given text to the console.
|
|
*
|
|
* @param string $output
|
|
* @return void
|
|
*/
|
|
function warning($output)
|
|
{
|
|
output('<fg=red>'.$output.'</>');
|
|
}
|
|
|
|
/**
|
|
* Output a table to the console.
|
|
*
|
|
* @param array $headers
|
|
* @param array $rows
|
|
* @return void
|
|
*/
|
|
function table(array $headers = [], array $rows = [])
|
|
{
|
|
$table = new Table(new ConsoleOutput);
|
|
|
|
$table->setHeaders($headers)->setRows($rows);
|
|
|
|
$table->render();
|
|
}
|
|
|
|
/**
|
|
* Output the given text to the console.
|
|
*
|
|
* @param string $output
|
|
* @return void
|
|
*/
|
|
function output($output)
|
|
{
|
|
if (isset($_ENV['APP_ENV']) && $_ENV['APP_ENV'] === 'testing') {
|
|
return;
|
|
}
|
|
|
|
(new ConsoleOutput)->writeln($output);
|
|
}
|
|
|
|
if (! function_exists('resolve')) {
|
|
/**
|
|
* Resolve the given class from the container.
|
|
*
|
|
* @param string $class
|
|
* @return mixed
|
|
*/
|
|
function resolve($class)
|
|
{
|
|
return Container::getInstance()->make($class);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Swap the given class implementation in the container.
|
|
*
|
|
* @param string $class
|
|
* @param mixed $instance
|
|
* @return void
|
|
*/
|
|
function swap($class, $instance)
|
|
{
|
|
Container::getInstance()->instance($class, $instance);
|
|
}
|
|
|
|
if (! function_exists('retry')) {
|
|
/**
|
|
* Retry the given function N times.
|
|
*
|
|
* @param int $retries
|
|
* @param callable $retries
|
|
* @param int $sleep
|
|
* @return mixed
|
|
*/
|
|
function retry($retries, $fn, $sleep = 0)
|
|
{
|
|
beginning:
|
|
try {
|
|
return $fn();
|
|
} catch (Exception $e) {
|
|
if (! $retries) {
|
|
throw $e;
|
|
}
|
|
|
|
$retries--;
|
|
|
|
if ($sleep > 0) {
|
|
usleep($sleep * 1000);
|
|
}
|
|
|
|
goto beginning;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Verify that the script is currently running as "sudo".
|
|
*
|
|
* @return void
|
|
*/
|
|
function should_be_sudo()
|
|
{
|
|
if (! isset($_SERVER['SUDO_USER'])) {
|
|
throw new Exception('This command must be run with sudo.');
|
|
}
|
|
}
|
|
|
|
if (! function_exists('tap')) {
|
|
/**
|
|
* Tap the given value.
|
|
*
|
|
* @param mixed $value
|
|
* @param callable $callback
|
|
* @return mixed
|
|
*/
|
|
function tap($value, callable $callback)
|
|
{
|
|
$callback($value);
|
|
|
|
return $value;
|
|
}
|
|
}
|
|
|
|
if (! function_exists('ends_with')) {
|
|
/**
|
|
* Determine if a given string ends with a given substring.
|
|
*
|
|
* @param string $haystack
|
|
* @param string|array $needles
|
|
* @return bool
|
|
*/
|
|
function ends_with($haystack, $needles) {
|
|
foreach ((array) $needles as $needle) {
|
|
if (substr($haystack, -strlen($needle)) === (string) $needle) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the user
|
|
*/
|
|
function user()
|
|
{
|
|
if (! isset($_SERVER['SUDO_USER'])) {
|
|
return $_SERVER['USER'];
|
|
}
|
|
|
|
return $_SERVER['SUDO_USER'];
|
|
}
|