1
0
mirror of https://github.com/laravel/valet.git synced 2026-02-05 16:40:05 +01:00
Files
laravel-valet/src/Configuration.php
2016-05-06 10:03:57 -05:00

145 lines
3.1 KiB
PHP

<?php
namespace Valet;
class Configuration
{
/**
* Install the Valet configuration file.
*
* @return void
*/
public static function install()
{
if (! is_dir($directory = VALET_HOME_PATH)) {
mkdir($directory, 0755);
chown($directory, $_SERVER['SUDO_USER']);
}
if (! is_dir($driversDirectory = VALET_HOME_PATH.'/Drivers')) {
mkdir($driversDirectory, 0755);
copy(__DIR__.'/../stubs/SampleValetDriver.php', $driversDirectory.'/SampleValetDriver.php');
chown($driversDirectory.'/SampleValetDriver.php', $_SERVER['SUDO_USER']);
chown($driversDirectory, $_SERVER['SUDO_USER']);
}
if (! file_exists(static::path())) {
static::write(['domain' => 'dev', 'paths' => []]);
}
chown(static::path(), $_SERVER['SUDO_USER']);
}
/**
* Add the given path to the configuration.
*
* @param string $path
* @return void
*/
public static function addPath($path)
{
$config = static::read();
$config['paths'] = array_unique(array_merge($config['paths'], [$path]));
static::write($config);
}
/**
* Add the given path to the configuration.
*
* @param string $path
* @return void
*/
public static function removePath($path)
{
$config = static::read();
foreach ($config['paths'] as $key => $value) {
if ($path === $value) {
unset($config['paths'][$key]);
}
}
$config['paths'] = array_unique(array_values($config['paths']));
static::write($config);
}
/**
* Get the configuration file path.
*
* @return string
*/
public static function path()
{
return VALET_HOME_PATH.'/config.json';
}
/**
* Prune all non-existent paths from the configuration.
*
* @return void
*/
public static function prune()
{
if (! file_exists(static::path())) {
return;
}
$config = static::read();
foreach ($config['paths'] as $key => $path) {
if (! is_dir($path)) {
unset($config['paths'][$key]);
}
}
$config['paths'] = array_values($config['paths']);
static::write($config);
}
/**
* Read the configuration file as JSON.
*
* @return array
*/
public static function read()
{
return json_decode(file_get_contents(static::path()), true);
}
/**
* Update a specific key in the configuration file.
*
* @param string $key
* @param mixed $value
* @return array
*/
public static function updateKey($key, $value)
{
$config = static::read();
$config[$key] = $value;
static::write($config);
return $config;
}
/**
* Write the given configuration to disk.
*
* @param array $config
* @return void
*/
public static function write(array $config)
{
file_put_contents(static::path(), json_encode($config, JSON_PRETTY_PRINT).PHP_EOL);
}
}