, services_note:?string}> */ public function all(): array { /** @var array> $targets */ $targets = (array) config('deployment.targets', []); $resolved = []; foreach ($targets as $key => $target) { $resolved[$key] = array_merge( [ 'label' => $key, 'domain' => '', 'remote_path' => '', 'expected_branch' => null, 'services' => [], 'services_note' => null, ], $target, ['key' => $key], ); } return $resolved; } /** * A célkörnyezet hosszan futó service-einek újraindító parancsai. * * @return array */ public function restartCommands(?string $key): array { $target = $this->find($key); if (! $target || $target['services'] === []) { return []; } $user = (string) config('deployment.swarm.user', 'root'); $host = (string) config('deployment.swarm.host'); return array_values(array_map( fn (string $service): string => sprintf( 'ssh %s@%s "docker service update --force %s"', $user, $host, $service, ), $target['services'], )); } /** * @return array{key:string, label:string, domain:string, remote_path:string, expected_branch:?string, services:array, services_note:?string}|null */ public function find(?string $key): ?array { return $key ? ($this->all()[$key] ?? null) : null; } /** * @return array */ public function options(): array { return array_map(fn (array $target): string => $target['label'], $this->all()); } public function defaultKey(): ?string { return array_key_first($this->all()); } }