Skip to content

Commit 2be9f38

Browse files
committed
fix(qa): fix phpstan issues
1 parent c0817c2 commit 2be9f38

4 files changed

Lines changed: 31 additions & 13 deletions

File tree

.php-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8.3
1+
8.3.30

phpstan.neon

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
parameters:
22
level: max
3+
treatPhpDocTypesAsCertain: false
34
parallel:
45
maximumNumberOfProcesses: 1
56
paths:

src/Service/DockerService.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ public function findAllContainer(): iterable
3535
Assert::allIsInstanceOf($containerSummaries, ContainerSummary::class);
3636

3737
foreach ($containerSummaries as $container) {
38-
$id = $container->getId();
38+
$id = $container->getId();
39+
if (null === $id) {
40+
continue;
41+
}
42+
3943
$containerInspect = $this->dockerApiClient->getDockerClient()->containerInspect($id);
4044

4145
if (!$containerInspect instanceof ContainerInspectResponse) {

src/Util/ContainerResponseToContainerDtoUtil.php

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use WebProject\DockerApi\Library\Generated\Model\ContainerInspectResponse;
88
use WebProject\DockerApiClient\Dto\DockerContainerDto;
99
use function array_unique;
10+
use function array_values;
1011
use function explode;
1112

1213
final readonly class ContainerResponseToContainerDtoUtil
@@ -17,33 +18,45 @@ public function __invoke(
1718
$ipAddresses = [];
1819
$networks = [];
1920

20-
foreach ($containerInspect->getNetworkSettings()->getNetworks() as $networkName => $network) {
21-
if ('' === $network->getIPAddress()) {
21+
$networkSettings = $containerInspect->getNetworkSettings();
22+
foreach ($networkSettings->getNetworks() as $networkName => $network) {
23+
$ip = $network->getIPAddress();
24+
if (null === $ip || '' === $ip) {
2225
continue;
2326
}
24-
$networks[$networkName]['aliases'] = array_unique($network->getAliases() ?? []);
25-
$networks[$networkName]['ip'] = $network->getIPAddress();
26-
$ipAddresses[] = $network->getIPAddress();
27+
$networks[$networkName]['aliases'] = array_values(array_unique($network->getAliases() ?? []));
28+
$networks[$networkName]['ip'] = $ip;
29+
$ipAddresses[] = $ip;
2730
}
2831

2932
$envVariables = [];
30-
foreach ($containerInspect->getConfig()->getEnv() as $envVar) {
33+
$config = $containerInspect->getConfig();
34+
foreach ($config->getEnv() ?? [] as $envVar) {
3135
if (!str_contains($envVar, '=')) {
3236
continue;
3337
}
34-
[$name, $value] = explode('=', $envVar);
38+
[$name, $value] = explode('=', $envVar, 2);
3539
$envVariables[$name] = $value;
3640
}
3741

42+
$ports = [];
43+
foreach ($networkSettings->getPorts() ?? [] as $portKey => $portBindings) {
44+
if (empty($portBindings)) {
45+
continue;
46+
}
47+
// PortBinding is expected by DTO for each string key
48+
$ports[$portKey] = $portBindings[0];
49+
}
50+
3851
return new DockerContainerDto(
39-
id: $containerInspect->getId(),
40-
name: $containerInspect->getName(),
41-
image: $containerInspect->getImage(),
52+
id: (string) $containerInspect->getId(),
53+
name: (string) $containerInspect->getName(),
54+
image: (string) $containerInspect->getImage(),
4255
running: $containerInspect->getState()?->getRunning() ?? false,
4356
envVariables: $envVariables,
4457
ipAddresses: $ipAddresses,
4558
networks: $networks,
46-
ports: (array) ($containerInspect->getNetworkSettings()->getPorts() ?? []),
59+
ports: $ports,
4760
);
4861
}
4962
}

0 commit comments

Comments
 (0)