Add phpstan level 7(#544)

This commit is contained in:
Saeed Vaziry
2025-03-12 13:31:10 +01:00
committed by GitHub
parent c22bb1fa80
commit 493cbb0849
437 changed files with 4505 additions and 2193 deletions

View File

@ -7,6 +7,9 @@
class CreateCommand
{
/**
* @param array<string, mixed> $input
*/
public function create(Site $site, array $input): Command
{
$script = new Command([
@ -19,6 +22,9 @@ public function create(Site $site, array $input): Command
return $script;
}
/**
* @return array<string, array<string>>
*/
public static function rules(): array
{
return [

View File

@ -19,6 +19,11 @@
class CreateSite
{
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function create(Server $server, array $input): Site
{
DB::beginTransaction();
@ -40,7 +45,7 @@ public function create(Server $server, array $input): Site
// check has access to repository
try {
if ($site->sourceControl) {
$site->sourceControl?->getRepo($site->repository);
$site->sourceControl->getRepo($site->repository);
}
} catch (SourceControlIsNotConnected) {
throw ValidationException::withMessages([
@ -72,14 +77,14 @@ public function create(Server $server, array $input): Site
$site->commands()->createMany($site->type()->baseCommands());
// install site
dispatch(function () use ($site) {
dispatch(function () use ($site): void {
$site->type()->install();
$site->update([
'status' => SiteStatus::READY,
'progress' => 100,
]);
Notifier::send($site, new SiteInstallationSucceed($site));
})->catch(function () use ($site) {
})->catch(function () use ($site): void {
$site->status = SiteStatus::INSTALLATION_FAILED;
$site->save();
Notifier::send($site, new SiteInstallationFailed($site));
@ -96,6 +101,10 @@ public function create(Server $server, array $input): Site
}
}
/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public static function rules(Server $server, array $input): array
{
$rules = [
@ -106,9 +115,7 @@ public static function rules(Server $server, array $input): array
'domain' => [
'required',
new DomainRule,
Rule::unique('sites', 'domain')->where(function ($query) use ($server) {
return $query->where('server_id', $server->id);
}),
Rule::unique('sites', 'domain')->where(fn ($query) => $query->where('server_id', $server->id)),
],
'aliases.*' => [
new DomainRule,
@ -125,6 +132,10 @@ public static function rules(Server $server, array $input): array
return array_merge($rules, self::typeRules($server, $input));
}
/**
* @param array<string, mixed> $input
* @return array<string, array<string>>
*/
private static function typeRules(Server $server, array $input): array
{
if (! isset($input['type']) || ! in_array($input['type'], config('core.site_types'))) {

View File

@ -3,6 +3,7 @@
namespace App\Actions\Site;
use App\Exceptions\SSHError;
use App\Models\Service;
use App\Models\Site;
use App\SSH\Services\PHP\PHP;
use App\SSH\Services\Webserver\Webserver;
@ -14,13 +15,18 @@ class DeleteSite
*/
public function delete(Site $site): void
{
/** @var Service $service */
$service = $site->server->webserver();
/** @var Webserver $webserverHandler */
$webserverHandler = $site->server->webserver()->handler();
$webserverHandler = $service->handler();
$webserverHandler->deleteSite($site);
if ($site->isIsolated()) {
/** @var Service $phpService */
$phpService = $site->server->php();
/** @var PHP $php */
$php = $site->server->php()->handler();
$php = $phpService->handler();
$php->removeFpmPool($site->user, $site->php_version, $site->id);
$os = $site->server->os();

View File

@ -39,9 +39,8 @@ public function run(Site $site): Deployment
}
$deployment->save();
dispatch(function () use ($site, $deployment) {
/** @var ServerLog $log */
$log = ServerLog::make($site->server, 'deploy-'.strtotime('now'))
dispatch(function () use ($site, $deployment): void {
$log = ServerLog::newLog($site->server, 'deploy-'.strtotime('now'))
->forSite($site);
$log->save();
$deployment->log_id = $log->id;
@ -56,7 +55,7 @@ public function run(Site $site): Deployment
$deployment->status = DeploymentStatus::FINISHED;
$deployment->save();
Notifier::send($site, new DeploymentCompleted($deployment, $site));
})->catch(function () use ($deployment, $site) {
})->catch(function () use ($deployment, $site): void {
$deployment->status = DeploymentStatus::FAILED;
$deployment->save();
Notifier::send($site, new DeploymentCompleted($deployment, $site));

View File

@ -6,6 +6,9 @@
class EditCommand
{
/**
* @param array<string, mixed> $input
*/
public function edit(Command $command, array $input): Command
{
$command->name = $input['name'];
@ -15,6 +18,9 @@ public function edit(Command $command, array $input): Command
return $command;
}
/**
* @return array<string, array<string>>
*/
public static function rules(): array
{
return [

View File

@ -10,6 +10,9 @@
class ExecuteCommand
{
/**
* @param array<string, mixed> $input
*/
public function execute(Command $command, User $user, array $input): CommandExecution
{
$execution = new CommandExecution([
@ -21,22 +24,22 @@ public function execute(Command $command, User $user, array $input): CommandExec
]);
$execution->save();
dispatch(function () use ($execution, $command) {
dispatch(function () use ($execution, $command): void {
$content = $execution->getContent();
$log = ServerLog::make($execution->server, 'command-'.$command->id.'-'.strtotime('now'));
$log = ServerLog::newLog($execution->server, 'command-'.$command->id.'-'.strtotime('now'));
$log->save();
$execution->server_log_id = $log->id;
$execution->save();
$execution->server->os()->runScript(
path: $command->site->path,
script: $content,
user: $command->site->user,
serverLog: $log,
user: $command->site->user,
variables: $execution->variables
);
$execution->status = CommandExecutionStatus::COMPLETED;
$execution->save();
})->catch(function () use ($execution) {
})->catch(function () use ($execution): void {
$execution->status = CommandExecutionStatus::FAILED;
$execution->save();
})->onConnection('ssh');
@ -44,6 +47,10 @@ public function execute(Command $command, User $user, array $input): CommandExec
return $execution;
}
/**
* @param array<string, mixed> $input
* @return array<string, string|array<int, mixed>>
*/
public static function rules(array $input): array
{
return [

View File

@ -2,23 +2,33 @@
namespace App\Actions\Site;
use App\Models\Service;
use App\Models\Site;
use App\SSH\Services\Webserver\Webserver;
use App\ValidationRules\DomainRule;
class UpdateAliases
{
/**
* @param array<string, mixed> $input
*/
public function update(Site $site, array $input): void
{
$site->aliases = $input['aliases'] ?? [];
/** @var Service $service */
$service = $site->server->webserver();
/** @var Webserver $webserver */
$webserver = $site->server->webserver()->handler();
$webserver = $service->handler();
$webserver->updateVHost($site);
$site->save();
}
/**
* @return array<string, array<int, mixed>>
*/
public static function rules(): array
{
return [

View File

@ -5,12 +5,12 @@
use App\Exceptions\SSHError;
use App\Models\Site;
use App\SSH\Git\Git;
use Illuminate\Validation\ValidationException;
class UpdateBranch
{
/**
* @throws ValidationException
* @param array<string, mixed> $input
*
* @throws SSHError
*/
public function update(Site $site, array $input): void
@ -22,7 +22,7 @@ public function update(Site $site, array $input): void
}
/**
* @throws ValidationException
* @return array<string, string>
*/
public static function rules(): array
{

View File

@ -2,23 +2,24 @@
namespace App\Actions\Site;
use App\Models\DeploymentScript;
use App\Models\Site;
use Illuminate\Validation\ValidationException;
class UpdateDeploymentScript
{
/**
* @throws ValidationException
* @param array<string, mixed> $input
*/
public function update(Site $site, array $input): void
{
/** @var DeploymentScript $script */
$script = $site->deploymentScript;
$script->content = $input['script'];
$script->save();
}
/**
* @throws ValidationException
* @return array<string, array<string>>
*/
public static function rules(): array
{

View File

@ -8,6 +8,8 @@
class UpdateEnv
{
/**
* @param array<string, mixed> $input
*
* @throws SSHError
*/
public function update(Site $site, array $input): void
@ -15,7 +17,7 @@ public function update(Site $site, array $input): void
$site->server->os()->editFileAs(
$site->path.'/.env',
$site->user,
trim($input['env']),
trim((string) $input['env']),
);
}
}

View File

@ -9,6 +9,9 @@
class UpdateLoadBalancer
{
/**
* @param array<string, mixed> $input
*/
public function update(Site $site, array $input): void
{
$site->loadBalancerServers()->delete();
@ -27,6 +30,9 @@ public function update(Site $site, array $input): void
$site->webserver()->updateVHost($site);
}
/**
* @return array<string, array<int, mixed>>
*/
public static function rules(Site $site): array
{
return [

View File

@ -8,6 +8,9 @@
class UpdatePHPVersion
{
/**
* @return array<string, array<string>>
*/
public static function rules(Site $site): array
{
return [
@ -21,6 +24,8 @@ public static function rules(Site $site): array
}
/**
* @param array<string, mixed> $input
*
* @throws SSHError
*/
public function update(Site $site, array $input): void

View File

@ -11,12 +11,17 @@
class UpdateSourceControl
{
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function update(Site $site, array $input): void
{
$site->source_control_id = $input['source_control'];
try {
if ($site->sourceControl) {
$site->sourceControl?->getRepo($site->repository);
$site->sourceControl->getRepo($site->repository);
}
} catch (SourceControlIsNotConnected) {
throw ValidationException::withMessages([
@ -34,6 +39,9 @@ public function update(Site $site, array $input): void
$site->save();
}
/**
* @return array<string, array<int, mixed>>
*/
public static function rules(): array
{
return [