1
0
mirror of https://github.com/laravel/valet.git synced 2026-02-04 08:10:07 +01:00

Add command to list isolated sites

This commit is contained in:
Matt Stauffer
2022-03-14 00:16:36 -04:00
parent 148eb0174d
commit 95aa03977c
5 changed files with 71 additions and 12 deletions

View File

@@ -177,4 +177,17 @@ public function uninstall()
$this->brew->uninstallFormula('nginx nginx-full');
$this->cli->quietly('rm -rf '.BREW_PREFIX.'/etc/nginx '.BREW_PREFIX.'/var/log/nginx');
}
/**
* Return a list of all sites with explicit Nginx configurations
*
* @return \Illuminate\Support\Collection
*/
public function configuredSites()
{
return collect($this->files->scandir(VALET_HOME_PATH.'/Nginx'))
->reject(function ($file) {
return starts_with($file, '.');
});
}
}

View File

@@ -243,6 +243,22 @@ public function unIsolateDirectory($directory)
info(sprintf('The site [%s] is now using the default PHP version.', $site));
}
/**
* List all directories with PHP isolation configured.
*
* @return \Illuminate\Support\Collection
*/
public function isolatedDirectories()
{
$configuredSites = $this->nginx->configuredSites();
return $configuredSites->filter(function ($item) {
return str_contains($this->files->get(VALET_HOME_PATH.'/Nginx/'.$item), 'Valet isolated PHP version');
})->map(function ($item) {
return ['url' => $item];
});
}
/**
* Use a specific version of PHP globally.
*
@@ -366,11 +382,7 @@ public function utilizedPhpVersions()
return self::fpmSockName($this->normalizePhpVersion($version));
})->unique();
return collect($this->files->scandir(VALET_HOME_PATH.'/Nginx'))
->reject(function ($file) {
return starts_with($file, '.');
})
->map(function ($file) use ($fpmSockFiles) {
return $this->nginx->configuredSites()->map(function ($file) use ($fpmSockFiles) {
$content = $this->files->get(VALET_HOME_PATH.'/Nginx/'.$file);
// Get the normalized PHP version for this config file, if it's defined

View File

@@ -528,7 +528,16 @@
*/
$app->command('unisolate', function () {
PhpFpm::unIsolateDirectory(basename(getcwd()));
})->descriptions('Stop customizing the version of PHP used by valet to serve the current working directory');
})->descriptions('Stop customizing the version of PHP used by Valet to serve the current working directory');
/**
* List isolated sites
*/
$app->command('isolated', function () {
$sites = PhpFpm::isolatedDirectories();
table(['Path'], $sites->all());
})->descriptions('List all sites using isolated versions of PHP.');
/**
* Tail log file.

View File

@@ -86,4 +86,26 @@ public function test_install_nginx_directories_rewrites_secure_nginx_files()
$site->shouldHaveReceived('resecureForNewConfiguration', [$data, $data]);
}
public function test_it_gets_configured_sites()
{
$files = Mockery::mock(Filesystem::class);
$files->shouldReceive('scandir')
->once()
->with(VALET_HOME_PATH . '/Nginx')
->andReturn(['.gitkeep', 'isolated-site-71.test', 'isolated-site-72.test', 'isolated-site-73.test']);
swap(Filesystem::class, $files);
swap(Configuration::class, $config = Mockery::spy(Configuration::class, ['read' => ['tld' => 'test', 'loopback' => VALET_LOOPBACK]]));
swap(Site::class, Mockery::mock(Site::class));
$nginx = resolve(Nginx::class);
$output = $nginx->configuredSites();
$this->assertEquals(
['isolated-site-71.test', 'isolated-site-72.test', 'isolated-site-73.test'],
$output->values()->all()
);
}
}

View File

@@ -64,6 +64,7 @@ public function test_utilized_php_versions()
{
$fileSystemMock = Mockery::mock(Filesystem::class);
$brewMock = Mockery::mock(Brew::class);
$nginxMock = Mockery::mock(Nginx::class);
$phpFpmMock = Mockery::mock(PhpFpm::class, [
$brewMock,
@@ -71,7 +72,7 @@ public function test_utilized_php_versions()
$fileSystemMock,
resolve(Configuration::class),
Mockery::mock(Site::class),
Mockery::mock(Nginx::class),
$nginxMock,
])->makePartial();
swap(PhpFpm::class, $phpFpmMock);
@@ -85,12 +86,9 @@ public function test_utilized_php_versions()
$brewMock->shouldReceive('getLinkedPhpFormula')->andReturn('php@7.3');
$fileSystemMock->shouldReceive('scandir')
$nginxMock->shouldReceive('configuredSites')
->once()
->with(VALET_HOME_PATH.'/Nginx')
->andReturn(['.gitkeep', 'isolated-site-71.test', 'isolated-site-72.test', 'isolated-site-73.test']);
$fileSystemMock->shouldNotReceive('get')->with(VALET_HOME_PATH.'/Nginx/.gitkeep');
->andReturn(collect(['isolated-site-71.test', 'isolated-site-72.test', 'isolated-site-73.test']));
$sites = [
[
@@ -114,6 +112,11 @@ public function test_utilized_php_versions()
$this->assertEquals(['php@7.1', 'php@7.2', 'php@7.3'], resolve(PhpFpm::class)->utilizedPhpVersions());
}
public function test_it_lists_isolated_directories()
{
$this->markTestIncomplete('@todo');
}
public function test_stop_unused_php_versions()
{
$brewMock = Mockery::mock(Brew::class);