From e26550a7213fb2e0deadb65d33f368bdb6edabc0 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Mon, 17 Nov 2025 13:31:26 +0100 Subject: [PATCH 01/14] require php 8.4 --- .github/workflows/ci.yml | 10 ++++------ CHANGELOG.md | 6 ++++++ composer.json | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 189105d..779f162 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,13 +4,11 @@ on: [push, pull_request] jobs: blackbox: - uses: innmind/github-workflows/.github/workflows/black-box-matrix.yml@main + uses: innmind/github-workflows/.github/workflows/black-box-matrix.yml@next coverage: - uses: innmind/github-workflows/.github/workflows/coverage-matrix.yml@main + uses: innmind/github-workflows/.github/workflows/coverage-matrix.yml@next secrets: inherit psalm: - uses: innmind/github-workflows/.github/workflows/psalm-matrix.yml@main + uses: innmind/github-workflows/.github/workflows/psalm-matrix.yml@next cs: - uses: innmind/github-workflows/.github/workflows/cs.yml@main - with: - php-version: '8.2' + uses: innmind/github-workflows/.github/workflows/cs.yml@next diff --git a/CHANGELOG.md b/CHANGELOG.md index fcfeefb..6b95f73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [Unreleased] + +### Changed + +- Requires PHP `8.4` + ## 5.0.0 - 2025-05-08 ### Changed diff --git a/composer.json b/composer.json index 2f6b577..dceef17 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "issues": "http://github.com/Innmind/ServerStatus/issues" }, "require": { - "php": "~8.2", + "php": "~8.4", "innmind/immutable": "~5.14", "innmind/time-continuum": "^4.1.1", "innmind/url": "~4.0", From 8dc7c813bfb37a41c0e07f16f474a97e8886961e Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Mon, 17 Nov 2025 13:39:15 +0100 Subject: [PATCH 02/14] update dependencies --- composer.json | 15 ++++++++++----- src/Server/Processes/Unix.php | 2 +- tests/Facade/Cpu/LinuxFacadeTest.php | 4 ++-- tests/Facade/Cpu/OSXFacadeTest.php | 4 ++-- tests/Facade/Memory/LinuxFacadeTest.php | 4 ++-- tests/Facade/Memory/OSXFacadeTest.php | 4 ++-- tests/Server/Disk/LoggerDiskTest.php | 4 ++-- tests/Server/Disk/UnixDiskTest.php | 4 ++-- tests/Server/Processes/LoggerProcessesTest.php | 4 ++-- tests/Server/Processes/UnixProcessesTest.php | 4 ++-- tests/ServerFactoryTest.php | 4 ++-- tests/Servers/LinuxTest.php | 4 ++-- tests/Servers/LoggerTest.php | 4 ++-- tests/Servers/OSXTest.php | 4 ++-- 14 files changed, 35 insertions(+), 30 deletions(-) diff --git a/composer.json b/composer.json index dceef17..0d6ccdb 100644 --- a/composer.json +++ b/composer.json @@ -15,12 +15,17 @@ }, "require": { "php": "~8.4", - "innmind/immutable": "~5.14", - "innmind/time-continuum": "^4.1.1", - "innmind/url": "~4.0", + "innmind/immutable": "dev-next", + "innmind/time-continuum": "dev-next", + "innmind/url": "dev-next", "psr/log": "~3.0", - "innmind/server-control": "~6.0", - "innmind/validation": "^2.0" + "innmind/server-control": "dev-next", + "innmind/validation": "dev-next", + "innmind/filesystem": "dev-next", + "innmind/ip": "dev-next", + "innmind/io": "dev-next", + "innmind/media-type": "dev-next", + "innmind/time-warp": "dev-next" }, "autoload": { "psr-4": { diff --git a/src/Server/Processes/Unix.php b/src/Server/Processes/Unix.php index cb285dd..cc5b0a7 100644 --- a/src/Server/Processes/Unix.php +++ b/src/Server/Processes/Unix.php @@ -137,7 +137,7 @@ private function parse(Str $output): Set ->keep(Is::string()->nonEmpty()->asPredicate()) ->map(Command::of(...)); $start = Maybe::just( - $this->clock->at($start, Format::of('D M j H:i:s Y')), + $this->clock->at($start, Format::of('D M j H:i:s Y'))->maybe(), ); return Maybe::all($pid, $user, $percentage, $memory, $start, $command) diff --git a/tests/Facade/Cpu/LinuxFacadeTest.php b/tests/Facade/Cpu/LinuxFacadeTest.php index 5a6c26a..096b45c 100644 --- a/tests/Facade/Cpu/LinuxFacadeTest.php +++ b/tests/Facade/Cpu/LinuxFacadeTest.php @@ -9,7 +9,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -22,7 +22,7 @@ public function setUp(): void $this->server = Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ); } diff --git a/tests/Facade/Cpu/OSXFacadeTest.php b/tests/Facade/Cpu/OSXFacadeTest.php index bd5ec6f..d3fb650 100644 --- a/tests/Facade/Cpu/OSXFacadeTest.php +++ b/tests/Facade/Cpu/OSXFacadeTest.php @@ -9,7 +9,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -22,7 +22,7 @@ public function setUp(): void $this->server = Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ); } diff --git a/tests/Facade/Memory/LinuxFacadeTest.php b/tests/Facade/Memory/LinuxFacadeTest.php index deefca5..d5b28a3 100644 --- a/tests/Facade/Memory/LinuxFacadeTest.php +++ b/tests/Facade/Memory/LinuxFacadeTest.php @@ -9,7 +9,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -22,7 +22,7 @@ public function setUp(): void $this->server = Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ); } diff --git a/tests/Facade/Memory/OSXFacadeTest.php b/tests/Facade/Memory/OSXFacadeTest.php index 3ecc610..de08990 100644 --- a/tests/Facade/Memory/OSXFacadeTest.php +++ b/tests/Facade/Memory/OSXFacadeTest.php @@ -10,7 +10,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -23,7 +23,7 @@ public function setUp(): void $this->server = Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ); } diff --git a/tests/Server/Disk/LoggerDiskTest.php b/tests/Server/Disk/LoggerDiskTest.php index 77d43dd..997ddea 100644 --- a/tests/Server/Disk/LoggerDiskTest.php +++ b/tests/Server/Disk/LoggerDiskTest.php @@ -13,7 +13,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\Immutable\Set; use Psr\Log\NullLogger; @@ -53,7 +53,7 @@ private function disk(): Disk Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ), EnvironmentPath::of(\getenv('PATH')), )->disk(); diff --git a/tests/Server/Disk/UnixDiskTest.php b/tests/Server/Disk/UnixDiskTest.php index d381420..7afd335 100644 --- a/tests/Server/Disk/UnixDiskTest.php +++ b/tests/Server/Disk/UnixDiskTest.php @@ -11,7 +11,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\Immutable\Set; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -26,7 +26,7 @@ public function setUp(): void Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), )->processes(), ); } diff --git a/tests/Server/Processes/LoggerProcessesTest.php b/tests/Server/Processes/LoggerProcessesTest.php index 2e4b38c..c74aebb 100644 --- a/tests/Server/Processes/LoggerProcessesTest.php +++ b/tests/Server/Processes/LoggerProcessesTest.php @@ -13,7 +13,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\Immutable\Set; use Psr\Log\NullLogger; @@ -53,7 +53,7 @@ private function processes(): Processes Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ), EnvironmentPath::of(\getenv('PATH')), )->processes(); diff --git a/tests/Server/Processes/UnixProcessesTest.php b/tests/Server/Processes/UnixProcessesTest.php index f30eab6..6684e79 100644 --- a/tests/Server/Processes/UnixProcessesTest.php +++ b/tests/Server/Processes/UnixProcessesTest.php @@ -14,7 +14,7 @@ Clock, PointInTime, }; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\Immutable\Set; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -30,7 +30,7 @@ public function setUp(): void Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), )->processes(), ); } diff --git a/tests/ServerFactoryTest.php b/tests/ServerFactoryTest.php index 7ce4be5..bd76f86 100644 --- a/tests/ServerFactoryTest.php +++ b/tests/ServerFactoryTest.php @@ -10,7 +10,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -23,7 +23,7 @@ public function testMake() Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ), EnvironmentPath::of(\getenv('PATH')), )); diff --git a/tests/Servers/LinuxTest.php b/tests/Servers/LinuxTest.php index 3b98e54..7c2239d 100644 --- a/tests/Servers/LinuxTest.php +++ b/tests/Servers/LinuxTest.php @@ -14,7 +14,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\Url\Path; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -30,7 +30,7 @@ public function setUp(): void Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ), ); } diff --git a/tests/Servers/LoggerTest.php b/tests/Servers/LoggerTest.php index abbf52e..0991716 100644 --- a/tests/Servers/LoggerTest.php +++ b/tests/Servers/LoggerTest.php @@ -16,7 +16,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\Url\Path; use Psr\Log\NullLogger; @@ -93,7 +93,7 @@ private function server(): Server Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ), EnvironmentPath::of(\getenv('PATH')), ); diff --git a/tests/Servers/OSXTest.php b/tests/Servers/OSXTest.php index 7c71fbd..1a57136 100644 --- a/tests/Servers/OSXTest.php +++ b/tests/Servers/OSXTest.php @@ -15,7 +15,7 @@ }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt\Usleep; +use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\Url\Path; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -31,7 +31,7 @@ public function setUp(): void Control::build( Clock::live(), IO::fromAmbientAuthority(), - Usleep::new(), + Halt::new(), ), EnvironmentPath::of(\getenv('PATH')), ); From 6b57e052b66edf4752d90b6efc2d88aec9b2e2cd Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Mon, 17 Nov 2025 13:53:04 +0100 Subject: [PATCH 03/14] make Server a final class --- CHANGELOG.md | 1 + src/Server.php | 82 ++++++++++++++++++++++++++++------ src/ServerFactory.php | 8 +--- src/Servers/Implementation.php | 38 ++++++++++++++++ src/Servers/Linux.php | 6 ++- src/Servers/Logger.php | 10 +++-- src/Servers/OSX.php | 6 ++- 7 files changed, 124 insertions(+), 27 deletions(-) create mode 100644 src/Servers/Implementation.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b95f73..ab69b39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Changed - Requires PHP `8.4` +- `Innmind\Server\Status\Server` is now a final class, all previous implementations are now flagged as internal ## 5.0.0 - 2025-05-08 diff --git a/src/Server.php b/src/Server.php index 8357826..1898e21 100644 --- a/src/Server.php +++ b/src/Server.php @@ -3,33 +3,89 @@ namespace Innmind\Server\Status; -use Innmind\Server\Status\Server\{ - Cpu, - Memory, - Processes, - LoadAverage, - Disk, +use Innmind\Server\Status\{ + Servers\Implementation, + Servers\OSX, + Servers\Linux, + Servers\Logger, + Server\Cpu, + Server\Memory, + Server\Processes, + Server\LoadAverage, + Server\Disk, }; +use Innmind\Server\Control\Server as Control; +use Innmind\TimeContinuum\Clock; use Innmind\Url\Path; use Innmind\Immutable\Attempt; +use Psr\Log\LoggerInterface; -interface Server +final class Server { + private function __construct( + private Implementation $implementation, + ) { + } + + public static function osx( + Clock $clock, + Control $control, + EnvironmentPath $path, + ): self { + return new self(OSX::of($clock, $control, $path)); + } + + public static function linux( + Clock $clock, + Control $control, + ): self { + return new self(Linux::of($clock, $control)); + } + + public static function logger(self $server, LoggerInterface $logger): self + { + return new self(Logger::of( + $server->implementation, + $logger, + )); + } + /** * @return Attempt */ - public function cpu(): Attempt; + public function cpu(): Attempt + { + return $this->implementation->cpu(); + } /** * @return Attempt */ - public function memory(): Attempt; - public function processes(): Processes; + public function memory(): Attempt + { + return $this->implementation->memory(); + } + + public function processes(): Processes + { + return $this->implementation->processes(); + } /** * @return Attempt */ - public function loadAverage(): Attempt; - public function disk(): Disk; - public function tmp(): Path; + public function loadAverage(): Attempt + { + return $this->implementation->loadAverage(); + } + + public function disk(): Disk + { + return $this->implementation->disk(); + } + + public function tmp(): Path + { + return $this->implementation->tmp(); + } } diff --git a/src/ServerFactory.php b/src/ServerFactory.php index 0f5376e..344a9f3 100644 --- a/src/ServerFactory.php +++ b/src/ServerFactory.php @@ -3,10 +3,6 @@ namespace Innmind\Server\Status; -use Innmind\Server\Status\Servers\{ - OSX, - Linux, -}; use Innmind\Server\Control\Server as Control; use Innmind\TimeContinuum\Clock; @@ -18,8 +14,8 @@ public static function build( EnvironmentPath $path, ): Server { return match (\PHP_OS) { - 'Darwin' => OSX::of($clock, $control, $path), - 'Linux' => Linux::of($clock, $control), + 'Darwin' => Server::osx($clock, $control, $path), + 'Linux' => Server::linux($clock, $control), default => throw new \LogicException('Unsupported operating system '.\PHP_OS), }; } diff --git a/src/Servers/Implementation.php b/src/Servers/Implementation.php new file mode 100644 index 0000000..628148c --- /dev/null +++ b/src/Servers/Implementation.php @@ -0,0 +1,38 @@ + + */ + public function cpu(): Attempt; + + /** + * @return Attempt + */ + public function memory(): Attempt; + public function processes(): Processes; + + /** + * @return Attempt + */ + public function loadAverage(): Attempt; + public function disk(): Disk; + public function tmp(): Path; +} diff --git a/src/Servers/Linux.php b/src/Servers/Linux.php index 30dc344..6e17b1a 100644 --- a/src/Servers/Linux.php +++ b/src/Servers/Linux.php @@ -4,7 +4,6 @@ namespace Innmind\Server\Status\Servers; use Innmind\Server\Status\{ - Server, Server\Processes, Facade\Cpu\LinuxFacade as CpuFacade, Facade\Memory\LinuxFacade as MemoryFacade, @@ -16,7 +15,10 @@ use Innmind\Url\Path; use Innmind\Immutable\Attempt; -final class Linux implements Server +/** + * @internal + */ +final class Linux implements Implementation { private CpuFacade $cpu; private MemoryFacade $memory; diff --git a/src/Servers/Logger.php b/src/Servers/Logger.php index ade1eb8..6ec84f0 100644 --- a/src/Servers/Logger.php +++ b/src/Servers/Logger.php @@ -4,7 +4,6 @@ namespace Innmind\Server\Status\Servers; use Innmind\Server\Status\{ - Server, Server\Processes, Server\Disk, }; @@ -12,15 +11,18 @@ use Innmind\Immutable\Attempt; use Psr\Log\LoggerInterface; -final class Logger implements Server +/** + * @internal + */ +final class Logger implements Implementation { private function __construct( - private Server $server, + private Implementation $server, private LoggerInterface $logger, ) { } - public static function of(Server $server, LoggerInterface $logger): self + public static function of(Implementation $server, LoggerInterface $logger): self { return new self($server, $logger); } diff --git a/src/Servers/OSX.php b/src/Servers/OSX.php index aecf206..8286100 100644 --- a/src/Servers/OSX.php +++ b/src/Servers/OSX.php @@ -4,7 +4,6 @@ namespace Innmind\Server\Status\Servers; use Innmind\Server\Status\{ - Server, Server\Processes, Facade\Cpu\OSXFacade as CpuFacade, Facade\Memory\OSXFacade as MemoryFacade, @@ -17,7 +16,10 @@ use Innmind\Url\Path; use Innmind\Immutable\Attempt; -final class OSX implements Server +/** + * @internal + */ +final class OSX implements Implementation { private CpuFacade $cpu; private MemoryFacade $memory; From 03d210841b96cfc1cafe8779cccb70ab4bea8276 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Mon, 17 Nov 2025 13:56:29 +0100 Subject: [PATCH 04/14] remove duplicated code --- src/Server.php | 2 +- src/Servers/Implementation.php | 2 -- src/Servers/Linux.php | 7 ------- src/Servers/Logger.php | 12 ------------ src/Servers/OSX.php | 7 ------- 5 files changed, 1 insertion(+), 29 deletions(-) diff --git a/src/Server.php b/src/Server.php index 1898e21..67bfb19 100644 --- a/src/Server.php +++ b/src/Server.php @@ -86,6 +86,6 @@ public function disk(): Disk public function tmp(): Path { - return $this->implementation->tmp(); + return Path::of(\rtrim(\sys_get_temp_dir(), '/').'/'); } } diff --git a/src/Servers/Implementation.php b/src/Servers/Implementation.php index 628148c..a1b2c2d 100644 --- a/src/Servers/Implementation.php +++ b/src/Servers/Implementation.php @@ -10,7 +10,6 @@ Server\LoadAverage, Server\Disk, }; -use Innmind\Url\Path; use Innmind\Immutable\Attempt; /** @@ -34,5 +33,4 @@ public function processes(): Processes; */ public function loadAverage(): Attempt; public function disk(): Disk; - public function tmp(): Path; } diff --git a/src/Servers/Linux.php b/src/Servers/Linux.php index 6e17b1a..b6ea29c 100644 --- a/src/Servers/Linux.php +++ b/src/Servers/Linux.php @@ -12,7 +12,6 @@ }; use Innmind\Server\Control\Server as Control; use Innmind\TimeContinuum\Clock; -use Innmind\Url\Path; use Innmind\Immutable\Attempt; /** @@ -72,10 +71,4 @@ public function disk(): Disk { return $this->disk; } - - #[\Override] - public function tmp(): Path - { - return Path::of(\rtrim(\sys_get_temp_dir(), '/').'/'); - } } diff --git a/src/Servers/Logger.php b/src/Servers/Logger.php index 6ec84f0..477f9d2 100644 --- a/src/Servers/Logger.php +++ b/src/Servers/Logger.php @@ -7,7 +7,6 @@ Server\Processes, Server\Disk, }; -use Innmind\Url\Path; use Innmind\Immutable\Attempt; use Psr\Log\LoggerInterface; @@ -90,15 +89,4 @@ public function disk(): Disk $this->logger, ); } - - #[\Override] - public function tmp(): Path - { - $tmp = $this->server->tmp(); - $this->logger->debug('Temporary folder located at: {path}', [ - 'path' => $tmp->toString(), - ]); - - return $tmp; - } } diff --git a/src/Servers/OSX.php b/src/Servers/OSX.php index 8286100..040a6a5 100644 --- a/src/Servers/OSX.php +++ b/src/Servers/OSX.php @@ -13,7 +13,6 @@ }; use Innmind\Server\Control\Server as Control; use Innmind\TimeContinuum\Clock; -use Innmind\Url\Path; use Innmind\Immutable\Attempt; /** @@ -73,10 +72,4 @@ public function disk(): Disk { return $this->disk; } - - #[\Override] - public function tmp(): Path - { - return Path::of(\rtrim(\sys_get_temp_dir(), '/').'/'); - } } From d4ab69b41dd40ce7447ed9d5aa02bd62e36aaf01 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Mon, 17 Nov 2025 14:02:58 +0100 Subject: [PATCH 05/14] replaces Sets by Sequences to allow for potential streaming of content --- CHANGELOG.md | 2 ++ src/Server/Disk.php | 6 +++--- src/Server/Disk/Logger.php | 4 ++-- src/Server/Disk/Unix.php | 15 +++++++-------- src/Server/Processes.php | 6 +++--- src/Server/Processes/Logger.php | 4 ++-- src/Server/Processes/Unix.php | 14 ++++++-------- 7 files changed, 25 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab69b39..caf12fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ - Requires PHP `8.4` - `Innmind\Server\Status\Server` is now a final class, all previous implementations are now flagged as internal +- `Innmind\Server\Status\Server\Processes::all()` now returns an `Innmind\Immutable\Sequence` +- `Innmind\Server\Status\Server\Disk::volumes()` now returns an `Innmind\Immutable\Sequence` ## 5.0.0 - 2025-05-08 diff --git a/src/Server/Disk.php b/src/Server/Disk.php index eb6273b..35996ce 100644 --- a/src/Server/Disk.php +++ b/src/Server/Disk.php @@ -8,16 +8,16 @@ Volume\MountPoint, }; use Innmind\Immutable\{ - Set, + Sequence, Maybe, }; interface Disk { /** - * @return Set + * @return Sequence */ - public function volumes(): Set; + public function volumes(): Sequence; /** * @return Maybe diff --git a/src/Server/Disk/Logger.php b/src/Server/Disk/Logger.php index aafab47..d63c057 100644 --- a/src/Server/Disk/Logger.php +++ b/src/Server/Disk/Logger.php @@ -8,7 +8,7 @@ Server\Disk\Volume\MountPoint, }; use Innmind\Immutable\{ - Set, + Sequence, Maybe, }; use Psr\Log\LoggerInterface; @@ -30,7 +30,7 @@ public static function of(Disk $disk, LoggerInterface $logger): self } #[\Override] - public function volumes(): Set + public function volumes(): Sequence { $volumes = $this->disk->volumes(); $this->logger->debug('{count} volumes currently mounted', [ diff --git a/src/Server/Disk/Unix.php b/src/Server/Disk/Unix.php index 158e00a..30b5037 100644 --- a/src/Server/Disk/Unix.php +++ b/src/Server/Disk/Unix.php @@ -17,7 +17,7 @@ use Innmind\Validation\Is; use Innmind\Immutable\{ Str, - Set, + Sequence, Maybe, Map, Monoid\Concat, @@ -48,7 +48,7 @@ public static function of(Processes $processes): self } #[\Override] - public function volumes(): Set + public function volumes(): Sequence { return $this ->processes @@ -67,7 +67,6 @@ public function volumes(): Set ) ->map($this->parse(...)) ->toSequence() - ->toSet() ->flatMap(static fn($volumes) => $volumes); } @@ -80,9 +79,9 @@ public function get(MountPoint $point): Maybe } /** - * @return Set + * @return Sequence */ - private function parse(Str $output): Set + private function parse(Str $output): Sequence { $lines = $output ->trim() @@ -126,8 +125,8 @@ private function parse(Str $output): Set ->map(Volume::of(...)); }); - return $volumes - ->flatMap(static fn($volume) => $volume->toSequence()) // discard unparsed volumes - ->toSet(); + return $volumes->flatMap( + static fn($volume) => $volume->toSequence(), // discard unparsed volumes + ); } } diff --git a/src/Server/Processes.php b/src/Server/Processes.php index 966628b..2306f28 100644 --- a/src/Server/Processes.php +++ b/src/Server/Processes.php @@ -5,16 +5,16 @@ use Innmind\Server\Status\Server\Process\Pid; use Innmind\Immutable\{ - Set, + Sequence, Maybe, }; interface Processes { /** - * @return Set + * @return Sequence */ - public function all(): Set; + public function all(): Sequence; /** * @return Maybe diff --git a/src/Server/Processes/Logger.php b/src/Server/Processes/Logger.php index 7003528..c164f59 100644 --- a/src/Server/Processes/Logger.php +++ b/src/Server/Processes/Logger.php @@ -10,7 +10,7 @@ }; use Innmind\TimeContinuum\Format; use Innmind\Immutable\{ - Set, + Sequence, Maybe, }; use Psr\Log\LoggerInterface; @@ -32,7 +32,7 @@ public static function of(Processes $processes, LoggerInterface $logger): self } #[\Override] - public function all(): Set + public function all(): Sequence { $all = $this->processes->all(); $this->logger->debug('{count} processes currently running', [ diff --git a/src/Server/Processes/Unix.php b/src/Server/Processes/Unix.php index cc5b0a7..f1b6f5a 100644 --- a/src/Server/Processes/Unix.php +++ b/src/Server/Processes/Unix.php @@ -21,7 +21,6 @@ use Innmind\Immutable\{ Str, Sequence, - Set, Maybe, Monoid\Concat, }; @@ -43,7 +42,7 @@ public static function of(Clock $clock, Control\Processes $processes): self } #[\Override] - public function all(): Set + public function all(): Sequence { return $this ->run( @@ -52,7 +51,6 @@ public function all(): Set ) ->map($this->parse(...)) ->toSequence() - ->toSet() ->flatMap(static fn($processes) => $processes); } @@ -95,9 +93,9 @@ private function run(Control\Command $command): Maybe } /** - * @return Set + * @return Sequence */ - private function parse(Str $output): Set + private function parse(Str $output): Sequence { $lines = $output ->trim() @@ -144,9 +142,9 @@ private function parse(Str $output): Set ->map(Process::of(...)); }); - return $processes - ->flatMap(static fn($process) => $process->toSequence()) // discard process that failed to be parsed - ->toSet(); + return $processes->flatMap( + static fn($process) => $process->toSequence(), // discard process that failed to be parsed + ); } private function format(): string From f115621d65f69e1fa5ef1653aeb9770aa8148156 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Mon, 17 Nov 2025 14:07:22 +0100 Subject: [PATCH 06/14] avoid accessing os constant at runtime --- src/Server/Processes/Unix.php | 32 ++++++++++++++++++++++---------- src/Servers/Linux.php | 2 +- src/Servers/OSX.php | 2 +- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/Server/Processes/Unix.php b/src/Server/Processes/Unix.php index f1b6f5a..b68761f 100644 --- a/src/Server/Processes/Unix.php +++ b/src/Server/Processes/Unix.php @@ -30,15 +30,32 @@ final class Unix implements Processes private function __construct( private Clock $clock, private Control\Processes $processes, + private string $format, ) { } /** * @internal */ - public static function of(Clock $clock, Control\Processes $processes): self + public static function osx(Clock $clock, Control\Processes $processes): self { - return new self($clock, $processes); + return new self( + $clock, + $processes, + 'lstart,user,pid,%cpu,%mem,command', + ); + } + + /** + * @internal + */ + public static function linux(Clock $clock, Control\Processes $processes): self + { + return new self( + $clock, + $processes, + 'lstart,user,pid,%cpu,%mem,cmd', + ); } #[\Override] @@ -47,7 +64,7 @@ public function all(): Sequence return $this ->run( Control\Command::foreground('ps') - ->withShortOption('eo', $this->format()), + ->withShortOption('eo', $this->format), ) ->map($this->parse(...)) ->toSequence() @@ -60,12 +77,12 @@ public function get(Pid $pid): Maybe return $this ->run( Control\Command::foreground('ps') - ->withShortOption('o', $this->format()) + ->withShortOption('o', $this->format) ->withShortOption('p', $pid->toString()), ) ->otherwise(fn() => $this->run( Control\Command::foreground('ps') - ->withShortOption('o', $this->format()) + ->withShortOption('o', $this->format) ->withShortOption('q', $pid->toString()), )) ->map($this->parse(...)) @@ -146,9 +163,4 @@ private function parse(Str $output): Sequence static fn($process) => $process->toSequence(), // discard process that failed to be parsed ); } - - private function format(): string - { - return \PHP_OS === 'Linux' ? 'lstart,user,pid,%cpu,%mem,cmd' : 'lstart,user,pid,%cpu,%mem,command'; - } } diff --git a/src/Servers/Linux.php b/src/Servers/Linux.php index b6ea29c..fcea107 100644 --- a/src/Servers/Linux.php +++ b/src/Servers/Linux.php @@ -29,7 +29,7 @@ private function __construct(Clock $clock, Control $control) { $this->cpu = new CpuFacade($control->processes()); $this->memory = new MemoryFacade($control->processes()); - $this->processes = Processes\Unix::of($clock, $control->processes()); + $this->processes = Processes\Unix::linux($clock, $control->processes()); $this->loadAverage = new LoadAverageFacade; $this->disk = Disk\Unix::of($control->processes()); } diff --git a/src/Servers/OSX.php b/src/Servers/OSX.php index 040a6a5..a3bab14 100644 --- a/src/Servers/OSX.php +++ b/src/Servers/OSX.php @@ -30,7 +30,7 @@ private function __construct(Clock $clock, Control $control, EnvironmentPath $pa { $this->cpu = new CpuFacade($control->processes()); $this->memory = new MemoryFacade($control->processes(), $path); - $this->processes = Processes\Unix::of($clock, $control->processes()); + $this->processes = Processes\Unix::osx($clock, $control->processes()); $this->loadAverage = new LoadAverageFacade; $this->disk = Disk\Unix::of($control->processes()); } From 2a97f1e361e9cf2ddac4a0d0789ba977dbe31314 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Mon, 17 Nov 2025 14:18:04 +0100 Subject: [PATCH 07/14] make Disk a final class --- CHANGELOG.md | 1 + src/Server/Disk.php | 41 +++++++++++++++++++++++++++--- src/Server/Disk/Implementation.php | 26 +++++++++++++++++++ src/Server/Disk/Logger.php | 14 +++++----- src/Server/Disk/Unix.php | 6 +++-- src/Servers/Linux.php | 4 +-- src/Servers/Logger.php | 2 +- src/Servers/OSX.php | 4 +-- 8 files changed, 81 insertions(+), 17 deletions(-) create mode 100644 src/Server/Disk/Implementation.php diff --git a/CHANGELOG.md b/CHANGELOG.md index caf12fe..806b19c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - `Innmind\Server\Status\Server` is now a final class, all previous implementations are now flagged as internal - `Innmind\Server\Status\Server\Processes::all()` now returns an `Innmind\Immutable\Sequence` - `Innmind\Server\Status\Server\Disk::volumes()` now returns an `Innmind\Immutable\Sequence` +- `Innmind\Server\Status\Server\Disk` is now a final class ## 5.0.0 - 2025-05-08 diff --git a/src/Server/Disk.php b/src/Server/Disk.php index 35996ce..3265fc9 100644 --- a/src/Server/Disk.php +++ b/src/Server/Disk.php @@ -4,23 +4,58 @@ namespace Innmind\Server\Status\Server; use Innmind\Server\Status\Server\Disk\{ + Implementation, + Unix, + Logger, Volume, Volume\MountPoint, }; +use Innmind\Server\Control\Server\Processes; use Innmind\Immutable\{ Sequence, Maybe, }; +use Psr\Log\LoggerInterface; -interface Disk +final class Disk { + private function __construct( + private Implementation $implementation, + ) { + } + + /** + * @internal + */ + public static function of(Processes $processes): self + { + return new self(Unix::of($processes)); + } + + /** + * @internal + */ + public static function logger(self $disk, LoggerInterface $logger): self + { + return new self(Logger::of( + $disk->implementation, + $logger, + )); + } + /** * @return Sequence */ - public function volumes(): Sequence; + public function volumes(): Sequence + { + return $this->implementation->volumes(); + } /** * @return Maybe */ - public function get(MountPoint $point): Maybe; + public function get(MountPoint $point): Maybe + { + return $this->implementation->get($point); + } } diff --git a/src/Server/Disk/Implementation.php b/src/Server/Disk/Implementation.php new file mode 100644 index 0000000..b7d7605 --- /dev/null +++ b/src/Server/Disk/Implementation.php @@ -0,0 +1,26 @@ + + */ + public function volumes(): Sequence; + + /** + * @return Maybe + */ + public function get(MountPoint $point): Maybe; +} diff --git a/src/Server/Disk/Logger.php b/src/Server/Disk/Logger.php index d63c057..90c676c 100644 --- a/src/Server/Disk/Logger.php +++ b/src/Server/Disk/Logger.php @@ -3,20 +3,20 @@ namespace Innmind\Server\Status\Server\Disk; -use Innmind\Server\Status\{ - Server\Disk, - Server\Disk\Volume\MountPoint, -}; +use Innmind\Server\Status\Server\Disk\Volume\MountPoint; use Innmind\Immutable\{ Sequence, Maybe, }; use Psr\Log\LoggerInterface; -final class Logger implements Disk +/** + * @internal + */ +final class Logger implements Implementation { private function __construct( - private Disk $disk, + private Implementation $disk, private LoggerInterface $logger, ) { } @@ -24,7 +24,7 @@ private function __construct( /** * @internal */ - public static function of(Disk $disk, LoggerInterface $logger): self + public static function of(Implementation $disk, LoggerInterface $logger): self { return new self($disk, $logger); } diff --git a/src/Server/Disk/Unix.php b/src/Server/Disk/Unix.php index 30b5037..3bd74db 100644 --- a/src/Server/Disk/Unix.php +++ b/src/Server/Disk/Unix.php @@ -4,7 +4,6 @@ namespace Innmind\Server\Status\Server\Disk; use Innmind\Server\Status\{ - Server\Disk, Server\Disk\Volume\MountPoint, Server\Disk\Volume\Usage, Server\Memory\Bytes, @@ -23,7 +22,10 @@ Monoid\Concat, }; -final class Unix implements Disk +/** + * @internal + */ +final class Unix implements Implementation { private static array $columns = [ 'Size' => 'size', diff --git a/src/Servers/Linux.php b/src/Servers/Linux.php index fcea107..d4149b2 100644 --- a/src/Servers/Linux.php +++ b/src/Servers/Linux.php @@ -23,7 +23,7 @@ final class Linux implements Implementation private MemoryFacade $memory; private Processes\Unix $processes; private LoadAverageFacade $loadAverage; - private Disk\Unix $disk; + private Disk $disk; private function __construct(Clock $clock, Control $control) { @@ -31,7 +31,7 @@ private function __construct(Clock $clock, Control $control) $this->memory = new MemoryFacade($control->processes()); $this->processes = Processes\Unix::linux($clock, $control->processes()); $this->loadAverage = new LoadAverageFacade; - $this->disk = Disk\Unix::of($control->processes()); + $this->disk = Disk::of($control->processes()); } /** diff --git a/src/Servers/Logger.php b/src/Servers/Logger.php index 477f9d2..a994887 100644 --- a/src/Servers/Logger.php +++ b/src/Servers/Logger.php @@ -84,7 +84,7 @@ public function loadAverage(): Attempt #[\Override] public function disk(): Disk { - return Disk\Logger::of( + return Disk::logger( $this->server->disk(), $this->logger, ); diff --git a/src/Servers/OSX.php b/src/Servers/OSX.php index a3bab14..a224980 100644 --- a/src/Servers/OSX.php +++ b/src/Servers/OSX.php @@ -24,7 +24,7 @@ final class OSX implements Implementation private MemoryFacade $memory; private Processes\Unix $processes; private LoadAverageFacade $loadAverage; - private Disk\Unix $disk; + private Disk $disk; private function __construct(Clock $clock, Control $control, EnvironmentPath $path) { @@ -32,7 +32,7 @@ private function __construct(Clock $clock, Control $control, EnvironmentPath $pa $this->memory = new MemoryFacade($control->processes(), $path); $this->processes = Processes\Unix::osx($clock, $control->processes()); $this->loadAverage = new LoadAverageFacade; - $this->disk = Disk\Unix::of($control->processes()); + $this->disk = Disk::of($control->processes()); } /** From 754603843b6ca0650571e196d27c4cf091b4540e Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Mon, 17 Nov 2025 14:24:22 +0100 Subject: [PATCH 08/14] make Processes a final class --- CHANGELOG.md | 1 + src/Server/Processes.php | 54 +++++++++++++++++++++++-- src/Server/Processes/Implementation.php | 29 +++++++++++++ src/Server/Processes/Logger.php | 10 +++-- src/Server/Processes/Unix.php | 6 ++- src/Servers/Linux.php | 4 +- src/Servers/Logger.php | 2 +- src/Servers/OSX.php | 4 +- 8 files changed, 95 insertions(+), 15 deletions(-) create mode 100644 src/Server/Processes/Implementation.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 806b19c..8e8d928 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - `Innmind\Server\Status\Server\Processes::all()` now returns an `Innmind\Immutable\Sequence` - `Innmind\Server\Status\Server\Disk::volumes()` now returns an `Innmind\Immutable\Sequence` - `Innmind\Server\Status\Server\Disk` is now a final class +- `Innmind\Server\Status\Server\Processes` is now a final class ## 5.0.0 - 2025-05-08 diff --git a/src/Server/Processes.php b/src/Server/Processes.php index 2306f28..ea43af4 100644 --- a/src/Server/Processes.php +++ b/src/Server/Processes.php @@ -3,21 +3,67 @@ namespace Innmind\Server\Status\Server; -use Innmind\Server\Status\Server\Process\Pid; +use Innmind\Server\Status\Server\{ + Processes\Implementation, + Processes\Unix, + Processes\Logger, + Process\Pid, +}; +use Innmind\Server\Control\Server as Control; +use Innmind\TimeContinuum\Clock; use Innmind\Immutable\{ Sequence, Maybe, }; +use Psr\Log\LoggerInterface; -interface Processes +final class Processes { + private function __construct( + private Implementation $implementation, + ) { + } + + /** + * @internal + */ + public static function osx(Clock $clock, Control\Processes $processes): self + { + return new self(Unix::osx($clock, $processes)); + } + + /** + * @internal + */ + public static function linux(Clock $clock, Control\Processes $processes): self + { + return new self(Unix::linux($clock, $processes)); + } + + /** + * @internal + */ + public static function logger(self $processes, LoggerInterface $logger): self + { + return new self(Logger::of( + $processes->implementation, + $logger, + )); + } + /** * @return Sequence */ - public function all(): Sequence; + public function all(): Sequence + { + return $this->implementation->all(); + } /** * @return Maybe */ - public function get(Pid $pid): Maybe; + public function get(Pid $pid): Maybe + { + return $this->implementation->get($pid); + } } diff --git a/src/Server/Processes/Implementation.php b/src/Server/Processes/Implementation.php new file mode 100644 index 0000000..972000f --- /dev/null +++ b/src/Server/Processes/Implementation.php @@ -0,0 +1,29 @@ + + */ + public function all(): Sequence; + + /** + * @return Maybe + */ + public function get(Pid $pid): Maybe; +} diff --git a/src/Server/Processes/Logger.php b/src/Server/Processes/Logger.php index c164f59..0b6b262 100644 --- a/src/Server/Processes/Logger.php +++ b/src/Server/Processes/Logger.php @@ -4,7 +4,6 @@ namespace Innmind\Server\Status\Server\Processes; use Innmind\Server\Status\{ - Server\Processes, Server\Process, Server\Process\Pid, }; @@ -15,10 +14,13 @@ }; use Psr\Log\LoggerInterface; -final class Logger implements Processes +/** + * @internal + */ +final class Logger implements Implementation { private function __construct( - private Processes $processes, + private Implementation $processes, private LoggerInterface $logger, ) { } @@ -26,7 +28,7 @@ private function __construct( /** * @internal */ - public static function of(Processes $processes, LoggerInterface $logger): self + public static function of(Implementation $processes, LoggerInterface $logger): self { return new self($processes, $logger); } diff --git a/src/Server/Processes/Unix.php b/src/Server/Processes/Unix.php index b68761f..6a1b846 100644 --- a/src/Server/Processes/Unix.php +++ b/src/Server/Processes/Unix.php @@ -4,7 +4,6 @@ namespace Innmind\Server\Status\Server\Processes; use Innmind\Server\Status\{ - Server\Processes, Server\Process, Server\Process\Pid, Server\Process\User, @@ -25,7 +24,10 @@ Monoid\Concat, }; -final class Unix implements Processes +/** + * @internal + */ +final class Unix implements Implementation { private function __construct( private Clock $clock, diff --git a/src/Servers/Linux.php b/src/Servers/Linux.php index d4149b2..900a1af 100644 --- a/src/Servers/Linux.php +++ b/src/Servers/Linux.php @@ -21,7 +21,7 @@ final class Linux implements Implementation { private CpuFacade $cpu; private MemoryFacade $memory; - private Processes\Unix $processes; + private Processes $processes; private LoadAverageFacade $loadAverage; private Disk $disk; @@ -29,7 +29,7 @@ private function __construct(Clock $clock, Control $control) { $this->cpu = new CpuFacade($control->processes()); $this->memory = new MemoryFacade($control->processes()); - $this->processes = Processes\Unix::linux($clock, $control->processes()); + $this->processes = Processes::linux($clock, $control->processes()); $this->loadAverage = new LoadAverageFacade; $this->disk = Disk::of($control->processes()); } diff --git a/src/Servers/Logger.php b/src/Servers/Logger.php index a994887..4318941 100644 --- a/src/Servers/Logger.php +++ b/src/Servers/Logger.php @@ -61,7 +61,7 @@ public function memory(): Attempt #[\Override] public function processes(): Processes { - return Processes\Logger::of( + return Processes::logger( $this->server->processes(), $this->logger, ); diff --git a/src/Servers/OSX.php b/src/Servers/OSX.php index a224980..b165dde 100644 --- a/src/Servers/OSX.php +++ b/src/Servers/OSX.php @@ -22,7 +22,7 @@ final class OSX implements Implementation { private CpuFacade $cpu; private MemoryFacade $memory; - private Processes\Unix $processes; + private Processes $processes; private LoadAverageFacade $loadAverage; private Disk $disk; @@ -30,7 +30,7 @@ private function __construct(Clock $clock, Control $control, EnvironmentPath $pa { $this->cpu = new CpuFacade($control->processes()); $this->memory = new MemoryFacade($control->processes(), $path); - $this->processes = Processes\Unix::osx($clock, $control->processes()); + $this->processes = Processes::osx($clock, $control->processes()); $this->loadAverage = new LoadAverageFacade; $this->disk = Disk::of($control->processes()); } From 75e33f6057a65c9d6101a3c27529aa5264992dee Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Mon, 17 Nov 2025 14:36:08 +0100 Subject: [PATCH 09/14] fix tests --- tests/Server/Disk/LoggerDiskTest.php | 20 +++++++++---------- tests/Server/Disk/UnixDiskTest.php | 15 ++++++++------ .../Server/Processes/LoggerProcessesTest.php | 20 +++++++++---------- tests/Server/Processes/UnixProcessesTest.php | 14 +++++++------ tests/Servers/LinuxTest.php | 3 +-- tests/Servers/LoggerTest.php | 19 +++++++++--------- tests/Servers/OSXTest.php | 3 +-- 7 files changed, 48 insertions(+), 46 deletions(-) diff --git a/tests/Server/Disk/LoggerDiskTest.php b/tests/Server/Disk/LoggerDiskTest.php index 997ddea..af83273 100644 --- a/tests/Server/Disk/LoggerDiskTest.php +++ b/tests/Server/Disk/LoggerDiskTest.php @@ -4,7 +4,7 @@ namespace Tests\Innmind\Server\Status\Server\Disk; use Innmind\Server\Status\{ - Server\Disk\Logger, + Server, Server\Disk, Server\Disk\Volume, Server\Disk\Volume\MountPoint, @@ -15,7 +15,7 @@ use Innmind\TimeContinuum\Clock; use Innmind\TimeWarp\Halt; use Innmind\IO\IO; -use Innmind\Immutable\Set; +use Innmind\Immutable\Sequence; use Psr\Log\NullLogger; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -23,22 +23,22 @@ class LoggerDiskTest extends TestCase { public function testInterface() { - $this->assertInstanceOf(Disk::class, Logger::of( - $this->disk(), + $this->assertInstanceOf(Disk::class, Server::logger( + $this->server(), new NullLogger, - )); + )->disk()); } public function testVolumes() { - $disk = Logger::of($this->disk(), new NullLogger); + $disk = Server::logger($this->server(), new NullLogger)->disk(); - $this->assertInstanceOf(Set::class, $disk->volumes()); + $this->assertInstanceOf(Sequence::class, $disk->volumes()); } public function testGet() { - $disk = Logger::of($this->disk(), new NullLogger); + $disk = Server::logger($this->server(), new NullLogger)->disk(); $this->assertInstanceOf(Volume::class, $disk->get(MountPoint::of('/'))->match( static fn($volume) => $volume, @@ -46,7 +46,7 @@ public function testGet() )); } - private function disk(): Disk + private function server(): Server { return ServerFactory::build( Clock::live(), @@ -56,6 +56,6 @@ private function disk(): Disk Halt::new(), ), EnvironmentPath::of(\getenv('PATH')), - )->disk(); + ); } } diff --git a/tests/Server/Disk/UnixDiskTest.php b/tests/Server/Disk/UnixDiskTest.php index 7afd335..645536f 100644 --- a/tests/Server/Disk/UnixDiskTest.php +++ b/tests/Server/Disk/UnixDiskTest.php @@ -4,16 +4,17 @@ namespace Tests\Innmind\Server\Status\Server\Disk; use Innmind\Server\Status\{ - Server\Disk\Unix, + ServerFactory, Server\Disk, Server\Disk\Volume, Server\Disk\Volume\MountPoint, + EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\Clock; use Innmind\TimeWarp\Halt; use Innmind\IO\IO; -use Innmind\Immutable\Set; +use Innmind\Immutable\Sequence; use Innmind\BlackBox\PHPUnit\Framework\TestCase; class UnixDiskTest extends TestCase @@ -22,13 +23,15 @@ class UnixDiskTest extends TestCase public function setUp(): void { - $this->disk = Unix::of( + $this->disk = ServerFactory::build( + Clock::live(), Control::build( Clock::live(), IO::fromAmbientAuthority(), Halt::new(), - )->processes(), - ); + ), + EnvironmentPath::of(\getenv('PATH')), + )->disk(); } public function testInterface() @@ -40,7 +43,7 @@ public function testVolumes() { $volumes = $this->disk->volumes(); - $this->assertInstanceOf(Set::class, $volumes); + $this->assertInstanceOf(Sequence::class, $volumes); $this->assertGreaterThanOrEqual(1, $volumes->size()); $this->assertTrue( $volumes diff --git a/tests/Server/Processes/LoggerProcessesTest.php b/tests/Server/Processes/LoggerProcessesTest.php index c74aebb..c45b30e 100644 --- a/tests/Server/Processes/LoggerProcessesTest.php +++ b/tests/Server/Processes/LoggerProcessesTest.php @@ -4,7 +4,7 @@ namespace Tests\Innmind\Server\Status\Server\Processes; use Innmind\Server\Status\{ - Server\Processes\Logger, + Server, Server\Processes, Server\Process, Server\Process\Pid, @@ -15,7 +15,7 @@ use Innmind\TimeContinuum\Clock; use Innmind\TimeWarp\Halt; use Innmind\IO\IO; -use Innmind\Immutable\Set; +use Innmind\Immutable\Sequence; use Psr\Log\NullLogger; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -23,22 +23,22 @@ class LoggerProcessesTest extends TestCase { public function testInterface() { - $this->assertInstanceOf(Processes::class, Logger::of( - $this->processes(), + $this->assertInstanceOf(Processes::class, Server::logger( + $this->server(), new NullLogger, - )); + )->processes()); } public function testAll() { - $processes = Logger::of($this->processes(), new NullLogger); + $processes = Server::logger($this->server(), new NullLogger)->processes(); - $this->assertInstanceOf(Set::class, $processes->all()); + $this->assertInstanceOf(Sequence::class, $processes->all()); } public function testGet() { - $processes = Logger::of($this->processes(), new NullLogger); + $processes = Server::logger($this->server(), new NullLogger)->processes(); $this->assertInstanceOf(Process::class, $processes->get(Pid::of(1))->match( static fn($process) => $process, @@ -46,7 +46,7 @@ public function testGet() )); } - private function processes(): Processes + private function server(): Server { return ServerFactory::build( Clock::live(), @@ -56,6 +56,6 @@ private function processes(): Processes Halt::new(), ), EnvironmentPath::of(\getenv('PATH')), - )->processes(); + ); } } diff --git a/tests/Server/Processes/UnixProcessesTest.php b/tests/Server/Processes/UnixProcessesTest.php index 6684e79..ef31440 100644 --- a/tests/Server/Processes/UnixProcessesTest.php +++ b/tests/Server/Processes/UnixProcessesTest.php @@ -4,10 +4,11 @@ namespace Tests\Innmind\Server\Status\Server\Processes; use Innmind\Server\Status\{ - Server\Processes\Unix, + ServerFactory, Server\Processes, Server\Process, Server\Process\Pid, + EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; use Innmind\TimeContinuum\{ @@ -16,7 +17,7 @@ }; use Innmind\TimeWarp\Halt; use Innmind\IO\IO; -use Innmind\Immutable\Set; +use Innmind\Immutable\Sequence; use Innmind\BlackBox\PHPUnit\Framework\TestCase; class UnixProcessesTest extends TestCase @@ -25,14 +26,15 @@ class UnixProcessesTest extends TestCase public function setUp(): void { - $this->processes = Unix::of( + $this->processes = ServerFactory::build( Clock::live(), Control::build( Clock::live(), IO::fromAmbientAuthority(), Halt::new(), - )->processes(), - ); + ), + EnvironmentPath::of(\getenv('PATH')), + )->processes(); } public function testInterface() @@ -44,7 +46,7 @@ public function testAll() { $all = $this->processes->all(); - $this->assertInstanceOf(Set::class, $all); + $this->assertInstanceOf(Sequence::class, $all); $this->assertGreaterThanOrEqual(1, $all->size()); $this->assertSame( 'root', diff --git a/tests/Servers/LinuxTest.php b/tests/Servers/LinuxTest.php index 7c2239d..10b4189 100644 --- a/tests/Servers/LinuxTest.php +++ b/tests/Servers/LinuxTest.php @@ -4,7 +4,6 @@ namespace Tests\Innmind\Server\Status\Servers; use Innmind\Server\Status\{ - Servers\Linux, Server, Server\Cpu, Server\Memory, @@ -25,7 +24,7 @@ class LinuxTest extends TestCase public function setUp(): void { - $this->server = Linux::of( + $this->server = Server::linux( Clock::live(), Control::build( Clock::live(), diff --git a/tests/Servers/LoggerTest.php b/tests/Servers/LoggerTest.php index 0991716..9a24960 100644 --- a/tests/Servers/LoggerTest.php +++ b/tests/Servers/LoggerTest.php @@ -4,7 +4,6 @@ namespace Tests\Innmind\Server\Status\Servers; use Innmind\Server\Status\{ - Servers\Logger, Server, Server\Cpu, Server\Memory, @@ -26,7 +25,7 @@ class LoggerTest extends TestCase { public function testInterface() { - $this->assertInstanceOf(Server::class, Logger::of( + $this->assertInstanceOf(Server::class, Server::logger( $this->server(), new NullLogger, )); @@ -34,7 +33,7 @@ public function testInterface() public function testCpu() { - $server = Logger::of($this->server(), new NullLogger); + $server = Server::logger($this->server(), new NullLogger); $this->assertInstanceOf(Cpu::class, $server->cpu()->match( static fn($cpu) => $cpu, @@ -44,7 +43,7 @@ public function testCpu() public function testMemory() { - $server = Logger::of($this->server(), new NullLogger); + $server = Server::logger($this->server(), new NullLogger); $this->assertInstanceOf(Memory::class, $server->memory()->match( static fn($memory) => $memory, @@ -54,34 +53,34 @@ public function testMemory() public function testProcesses() { - $server = Logger::of( + $server = Server::logger( $this->server(), new NullLogger, ); - $this->assertInstanceOf(Processes\Logger::class, $server->processes()); + $this->assertInstanceOf(Processes::class, $server->processes()); } public function testLoadAverage() { - $server = Logger::of($this->server(), new NullLogger); + $server = Server::logger($this->server(), new NullLogger); $this->assertInstanceOf(LoadAverage::class, $server->loadAverage()->unwrap()); } public function testDisk() { - $server = Logger::of( + $server = Server::logger( $this->server(), new NullLogger, ); - $this->assertInstanceOf(Disk\Logger::class, $server->disk()); + $this->assertInstanceOf(Disk::class, $server->disk()); } public function testTmp() { - $server = Logger::of($this->server(), new NullLogger); + $server = Server::logger($this->server(), new NullLogger); $this->assertInstanceOf(Path::class, $server->tmp()); } diff --git a/tests/Servers/OSXTest.php b/tests/Servers/OSXTest.php index 1a57136..f0b6b34 100644 --- a/tests/Servers/OSXTest.php +++ b/tests/Servers/OSXTest.php @@ -4,7 +4,6 @@ namespace Tests\Innmind\Server\Status\Servers; use Innmind\Server\Status\{ - Servers\OSX, Server, Server\Cpu, Server\Memory, @@ -26,7 +25,7 @@ class OSXTest extends TestCase public function setUp(): void { - $this->server = OSX::of( + $this->server = Server::osx( Clock::live(), Control::build( Clock::live(), From 825e98b8a8e19b34b975b5b363a3877105609cc8 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Sun, 1 Feb 2026 13:24:43 +0100 Subject: [PATCH 10/14] tag dependencies --- .github/workflows/ci.yml | 8 ++++---- composer.json | 18 +++++++----------- src/Facade/Cpu/LinuxFacade.php | 4 ++-- src/Facade/Cpu/OSXFacade.php | 4 ++-- src/Facade/Memory/LinuxFacade.php | 2 +- src/Facade/Memory/OSXFacade.php | 2 +- src/Server/Disk/Unix.php | 2 +- src/Server/Processes/Unix.php | 2 +- 8 files changed, 19 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 779f162..2f3eecb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,11 +4,11 @@ on: [push, pull_request] jobs: blackbox: - uses: innmind/github-workflows/.github/workflows/black-box-matrix.yml@next + uses: innmind/github-workflows/.github/workflows/black-box-matrix.yml@main coverage: - uses: innmind/github-workflows/.github/workflows/coverage-matrix.yml@next + uses: innmind/github-workflows/.github/workflows/coverage-matrix.yml@main secrets: inherit psalm: - uses: innmind/github-workflows/.github/workflows/psalm-matrix.yml@next + uses: innmind/github-workflows/.github/workflows/psalm-matrix.yml@main cs: - uses: innmind/github-workflows/.github/workflows/cs.yml@next + uses: innmind/github-workflows/.github/workflows/cs.yml@main diff --git a/composer.json b/composer.json index 0d6ccdb..fc9878e 100644 --- a/composer.json +++ b/composer.json @@ -15,17 +15,13 @@ }, "require": { "php": "~8.4", - "innmind/immutable": "dev-next", - "innmind/time-continuum": "dev-next", - "innmind/url": "dev-next", + "innmind/immutable": "~6.0", + "innmind/time-continuum": "~5.0", + "innmind/time-warp": "~5.0", + "innmind/url": "~5.0", "psr/log": "~3.0", - "innmind/server-control": "dev-next", - "innmind/validation": "dev-next", - "innmind/filesystem": "dev-next", - "innmind/ip": "dev-next", - "innmind/io": "dev-next", - "innmind/media-type": "dev-next", - "innmind/time-warp": "dev-next" + "innmind/server-control": "~7.0", + "innmind/validation": "~3.0" }, "autoload": { "psr-4": { @@ -39,7 +35,7 @@ }, "require-dev": { "innmind/black-box": "~6.1", - "innmind/static-analysis": "~1.2.1", + "innmind/static-analysis": "~1.3", "innmind/coding-standard": "~2.0" } } diff --git a/src/Facade/Cpu/LinuxFacade.php b/src/Facade/Cpu/LinuxFacade.php index 4c35e87..5bf33a0 100644 --- a/src/Facade/Cpu/LinuxFacade.php +++ b/src/Facade/Cpu/LinuxFacade.php @@ -53,7 +53,7 @@ public function __invoke(): Attempt static fn($success) => $success ->output() ->map(static fn($chunk) => $chunk->data()) - ->fold(new Concat), + ->fold(Concat::monoid), ) ->flatMap($this->parse(...)); } @@ -80,7 +80,7 @@ private function parse(Str $output): Attempt static fn($success) => $success ->output() ->map(static fn($chunk) => $chunk->data()) - ->fold(new Concat) + ->fold(Concat::monoid) ->toString(), ) ->map(static fn($cores) => (int) $cores) diff --git a/src/Facade/Cpu/OSXFacade.php b/src/Facade/Cpu/OSXFacade.php index b6d92a0..9d537b3 100644 --- a/src/Facade/Cpu/OSXFacade.php +++ b/src/Facade/Cpu/OSXFacade.php @@ -54,7 +54,7 @@ public function __invoke(): Attempt static fn($success) => $success ->output() ->map(static fn($chunk) => $chunk->data()) - ->fold(new Concat), + ->fold(Concat::monoid), ) ->flatMap($this->parse(...)); } @@ -88,7 +88,7 @@ private function parse(Str $output): Attempt static fn($success) => $success ->output() ->map(static fn($chunk) => $chunk->data()) - ->fold(new Concat), + ->fold(Concat::monoid), ) ->map(static fn($output) => $output->trim()) ->map(static fn($output) => $output->capture('~^hw.ncpu: (?P\d+)$~')) diff --git a/src/Facade/Memory/LinuxFacade.php b/src/Facade/Memory/LinuxFacade.php index 942a8f4..4113470 100644 --- a/src/Facade/Memory/LinuxFacade.php +++ b/src/Facade/Memory/LinuxFacade.php @@ -56,7 +56,7 @@ public function __invoke(): Attempt static fn($success) => $success ->output() ->map(static fn($chunk) => $chunk->data()) - ->fold(new Concat), + ->fold(Concat::monoid), ) ->flatMap($this->parse(...)); } diff --git a/src/Facade/Memory/OSXFacade.php b/src/Facade/Memory/OSXFacade.php index 32cb132..325e1d2 100644 --- a/src/Facade/Memory/OSXFacade.php +++ b/src/Facade/Memory/OSXFacade.php @@ -112,6 +112,6 @@ private function run(Command $command): Str ->toSequence() ->flatMap(static fn($success) => $success->output()) ->map(static fn($chunk) => $chunk->data()) - ->fold(new Concat); + ->fold(Concat::monoid); } } diff --git a/src/Server/Disk/Unix.php b/src/Server/Disk/Unix.php index 3bd74db..0b3fd83 100644 --- a/src/Server/Disk/Unix.php +++ b/src/Server/Disk/Unix.php @@ -65,7 +65,7 @@ public function volumes(): Sequence ->output() ->filter(static fn($chunk) => $chunk->type() === Output\Type::output) // discard errors such as "df: getattrlist failed" ->map(static fn($chunk) => $chunk->data()) - ->fold(new Concat), + ->fold(Concat::monoid), ) ->map($this->parse(...)) ->toSequence() diff --git a/src/Server/Processes/Unix.php b/src/Server/Processes/Unix.php index 6a1b846..20255b3 100644 --- a/src/Server/Processes/Unix.php +++ b/src/Server/Processes/Unix.php @@ -107,7 +107,7 @@ private function run(Control\Command $command): Maybe static fn($success) => $success ->output() ->map(static fn($chunk) => $chunk->data()) - ->fold(new Concat), + ->fold(Concat::monoid), ); } From 90dc9fa42a62ae9c27a639fd455068c601af8b41 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Sun, 1 Feb 2026 13:31:43 +0100 Subject: [PATCH 11/14] replace innmind/time-continuum by innmind/time --- composer.json | 3 +-- src/Server.php | 2 +- src/Server/Process.php | 8 ++++---- src/Server/Processes.php | 2 +- src/Server/Processes/Logger.php | 2 +- src/Server/Processes/Unix.php | 2 +- src/ServerFactory.php | 2 +- src/Servers/Linux.php | 2 +- src/Servers/OSX.php | 2 +- tests/Facade/Cpu/LinuxFacadeTest.php | 6 ++++-- tests/Facade/Cpu/OSXFacadeTest.php | 6 ++++-- tests/Facade/Memory/LinuxFacadeTest.php | 6 ++++-- tests/Facade/Memory/OSXFacadeTest.php | 6 ++++-- tests/Server/Disk/LoggerDiskTest.php | 6 ++++-- tests/Server/Disk/UnixDiskTest.php | 6 ++++-- tests/Server/ProcessTest.php | 4 ++-- tests/Server/Processes/LoggerProcessesTest.php | 6 ++++-- tests/Server/Processes/UnixProcessesTest.php | 8 ++++---- tests/ServerFactoryTest.php | 6 ++++-- tests/Servers/LinuxTest.php | 6 ++++-- tests/Servers/LoggerTest.php | 6 ++++-- tests/Servers/OSXTest.php | 6 ++++-- 22 files changed, 62 insertions(+), 41 deletions(-) diff --git a/composer.json b/composer.json index fc9878e..cd9c38f 100644 --- a/composer.json +++ b/composer.json @@ -16,8 +16,7 @@ "require": { "php": "~8.4", "innmind/immutable": "~6.0", - "innmind/time-continuum": "~5.0", - "innmind/time-warp": "~5.0", + "innmind/time": "~1.0", "innmind/url": "~5.0", "psr/log": "~3.0", "innmind/server-control": "~7.0", diff --git a/src/Server.php b/src/Server.php index 67bfb19..c204219 100644 --- a/src/Server.php +++ b/src/Server.php @@ -15,7 +15,7 @@ Server\Disk, }; use Innmind\Server\Control\Server as Control; -use Innmind\TimeContinuum\Clock; +use Innmind\Time\Clock; use Innmind\Url\Path; use Innmind\Immutable\Attempt; use Psr\Log\LoggerInterface; diff --git a/src/Server/Process.php b/src/Server/Process.php index 63c9671..38db37c 100644 --- a/src/Server/Process.php +++ b/src/Server/Process.php @@ -10,7 +10,7 @@ Process\Memory, Cpu\Percentage, }; -use Innmind\TimeContinuum\PointInTime; +use Innmind\Time\Point; use Innmind\Immutable\Maybe; /** @@ -19,7 +19,7 @@ final class Process { /** - * @param Maybe $start + * @param Maybe $start */ private function __construct( private Pid $pid, @@ -35,7 +35,7 @@ private function __construct( * @internal * @psalm-pure * - * @param Maybe $start + * @param Maybe $start */ public static function of( Pid $pid, @@ -69,7 +69,7 @@ public function memory(): Memory } /** - * @return Maybe + * @return Maybe */ public function start(): Maybe { diff --git a/src/Server/Processes.php b/src/Server/Processes.php index ea43af4..b28bb74 100644 --- a/src/Server/Processes.php +++ b/src/Server/Processes.php @@ -10,7 +10,7 @@ Process\Pid, }; use Innmind\Server\Control\Server as Control; -use Innmind\TimeContinuum\Clock; +use Innmind\Time\Clock; use Innmind\Immutable\{ Sequence, Maybe, diff --git a/src/Server/Processes/Logger.php b/src/Server/Processes/Logger.php index 0b6b262..5084227 100644 --- a/src/Server/Processes/Logger.php +++ b/src/Server/Processes/Logger.php @@ -7,7 +7,7 @@ Server\Process, Server\Process\Pid, }; -use Innmind\TimeContinuum\Format; +use Innmind\Time\Format; use Innmind\Immutable\{ Sequence, Maybe, diff --git a/src/Server/Processes/Unix.php b/src/Server/Processes/Unix.php index 20255b3..5f23712 100644 --- a/src/Server/Processes/Unix.php +++ b/src/Server/Processes/Unix.php @@ -12,7 +12,7 @@ Server\Cpu\Percentage, }; use Innmind\Server\Control\Server as Control; -use Innmind\TimeContinuum\{ +use Innmind\Time\{ Clock, Format, }; diff --git a/src/ServerFactory.php b/src/ServerFactory.php index 344a9f3..eb64076 100644 --- a/src/ServerFactory.php +++ b/src/ServerFactory.php @@ -4,7 +4,7 @@ namespace Innmind\Server\Status; use Innmind\Server\Control\Server as Control; -use Innmind\TimeContinuum\Clock; +use Innmind\Time\Clock; final class ServerFactory { diff --git a/src/Servers/Linux.php b/src/Servers/Linux.php index 900a1af..578c4c0 100644 --- a/src/Servers/Linux.php +++ b/src/Servers/Linux.php @@ -11,7 +11,7 @@ Server\Disk, }; use Innmind\Server\Control\Server as Control; -use Innmind\TimeContinuum\Clock; +use Innmind\Time\Clock; use Innmind\Immutable\Attempt; /** diff --git a/src/Servers/OSX.php b/src/Servers/OSX.php index b165dde..26101eb 100644 --- a/src/Servers/OSX.php +++ b/src/Servers/OSX.php @@ -12,7 +12,7 @@ EnvironmentPath, }; use Innmind\Server\Control\Server as Control; -use Innmind\TimeContinuum\Clock; +use Innmind\Time\Clock; use Innmind\Immutable\Attempt; /** diff --git a/tests/Facade/Cpu/LinuxFacadeTest.php b/tests/Facade/Cpu/LinuxFacadeTest.php index 096b45c..add24ea 100644 --- a/tests/Facade/Cpu/LinuxFacadeTest.php +++ b/tests/Facade/Cpu/LinuxFacadeTest.php @@ -8,8 +8,10 @@ Server\Cpu, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; diff --git a/tests/Facade/Cpu/OSXFacadeTest.php b/tests/Facade/Cpu/OSXFacadeTest.php index d3fb650..a7bb164 100644 --- a/tests/Facade/Cpu/OSXFacadeTest.php +++ b/tests/Facade/Cpu/OSXFacadeTest.php @@ -8,8 +8,10 @@ Server\Cpu, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; diff --git a/tests/Facade/Memory/LinuxFacadeTest.php b/tests/Facade/Memory/LinuxFacadeTest.php index d5b28a3..b40812d 100644 --- a/tests/Facade/Memory/LinuxFacadeTest.php +++ b/tests/Facade/Memory/LinuxFacadeTest.php @@ -8,8 +8,10 @@ Server\Memory, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; diff --git a/tests/Facade/Memory/OSXFacadeTest.php b/tests/Facade/Memory/OSXFacadeTest.php index de08990..bd82925 100644 --- a/tests/Facade/Memory/OSXFacadeTest.php +++ b/tests/Facade/Memory/OSXFacadeTest.php @@ -9,8 +9,10 @@ EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; diff --git a/tests/Server/Disk/LoggerDiskTest.php b/tests/Server/Disk/LoggerDiskTest.php index af83273..6b85fcc 100644 --- a/tests/Server/Disk/LoggerDiskTest.php +++ b/tests/Server/Disk/LoggerDiskTest.php @@ -12,8 +12,10 @@ EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\Immutable\Sequence; use Psr\Log\NullLogger; diff --git a/tests/Server/Disk/UnixDiskTest.php b/tests/Server/Disk/UnixDiskTest.php index 645536f..c5a319a 100644 --- a/tests/Server/Disk/UnixDiskTest.php +++ b/tests/Server/Disk/UnixDiskTest.php @@ -11,8 +11,10 @@ EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\Immutable\Sequence; use Innmind\BlackBox\PHPUnit\Framework\TestCase; diff --git a/tests/Server/ProcessTest.php b/tests/Server/ProcessTest.php index 3da229c..6295f0e 100644 --- a/tests/Server/ProcessTest.php +++ b/tests/Server/ProcessTest.php @@ -12,7 +12,7 @@ Cpu\Percentage, }; use Innmind\Immutable\Maybe; -use Fixtures\Innmind\TimeContinuum\PointInTime; +use Fixtures\Innmind\Time\Point; use Innmind\BlackBox\{ PHPUnit\BlackBox, PHPUnit\Framework\TestCase, @@ -25,7 +25,7 @@ class ProcessTest extends TestCase public function testInterface() { $this - ->forAll(PointInTime::any()) + ->forAll(Point::any()) ->then(function($pointInTime) { $process = Process::of( $pid = Pid::of(1), diff --git a/tests/Server/Processes/LoggerProcessesTest.php b/tests/Server/Processes/LoggerProcessesTest.php index c45b30e..2b05bbd 100644 --- a/tests/Server/Processes/LoggerProcessesTest.php +++ b/tests/Server/Processes/LoggerProcessesTest.php @@ -12,8 +12,10 @@ EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\Immutable\Sequence; use Psr\Log\NullLogger; diff --git a/tests/Server/Processes/UnixProcessesTest.php b/tests/Server/Processes/UnixProcessesTest.php index ef31440..1a5299d 100644 --- a/tests/Server/Processes/UnixProcessesTest.php +++ b/tests/Server/Processes/UnixProcessesTest.php @@ -11,11 +11,11 @@ EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\{ +use Innmind\Time\{ Clock, - PointInTime, + Point, + Halt, }; -use Innmind\TimeWarp\Halt; use Innmind\IO\IO; use Innmind\Immutable\Sequence; use Innmind\BlackBox\PHPUnit\Framework\TestCase; @@ -113,7 +113,7 @@ public function testProcessTimeIsStillAccessible() ); $this->assertInstanceOf(Process::class, $process); - $this->assertInstanceOf(PointInTime::class, $process->start()->match( + $this->assertInstanceOf(Point::class, $process->start()->match( static fn($start) => $start, static fn() => null, )); diff --git a/tests/ServerFactoryTest.php b/tests/ServerFactoryTest.php index bd76f86..0fa1dc5 100644 --- a/tests/ServerFactoryTest.php +++ b/tests/ServerFactoryTest.php @@ -9,8 +9,10 @@ EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\BlackBox\PHPUnit\Framework\TestCase; diff --git a/tests/Servers/LinuxTest.php b/tests/Servers/LinuxTest.php index 10b4189..f945367 100644 --- a/tests/Servers/LinuxTest.php +++ b/tests/Servers/LinuxTest.php @@ -12,8 +12,10 @@ Server\Disk }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\Url\Path; use Innmind\BlackBox\PHPUnit\Framework\TestCase; diff --git a/tests/Servers/LoggerTest.php b/tests/Servers/LoggerTest.php index 9a24960..f336975 100644 --- a/tests/Servers/LoggerTest.php +++ b/tests/Servers/LoggerTest.php @@ -14,8 +14,10 @@ EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\Url\Path; use Psr\Log\NullLogger; diff --git a/tests/Servers/OSXTest.php b/tests/Servers/OSXTest.php index f0b6b34..ba9a6b0 100644 --- a/tests/Servers/OSXTest.php +++ b/tests/Servers/OSXTest.php @@ -13,8 +13,10 @@ EnvironmentPath, }; use Innmind\Server\Control\ServerFactory as Control; -use Innmind\TimeContinuum\Clock; -use Innmind\TimeWarp\Halt; +use Innmind\Time\{ + Clock, + Halt, +}; use Innmind\IO\IO; use Innmind\Url\Path; use Innmind\BlackBox\PHPUnit\Framework\TestCase; From 0991b8f31161623f49e1275251a0fd15d165a938 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Sun, 1 Feb 2026 13:32:51 +0100 Subject: [PATCH 12/14] add extensive CI --- .github/workflows/extensive.yml | 12 ++++++++++++ blackbox.php | 4 ++++ 2 files changed, 16 insertions(+) create mode 100644 .github/workflows/extensive.yml diff --git a/.github/workflows/extensive.yml b/.github/workflows/extensive.yml new file mode 100644 index 0000000..257f139 --- /dev/null +++ b/.github/workflows/extensive.yml @@ -0,0 +1,12 @@ +name: Extensive CI + +on: + push: + tags: + - '*' + paths: + - '.github/workflows/extensive.yml' + +jobs: + blackbox: + uses: innmind/github-workflows/.github/workflows/extensive.yml@main diff --git a/blackbox.php b/blackbox.php index 50022e2..67a2468 100644 --- a/blackbox.php +++ b/blackbox.php @@ -10,6 +10,10 @@ }; Application::new($argv) + ->when( + \getenv('BLACKBOX_SET_SIZE') !== false, + static fn(Application $app) => $app->scenariiPerProof((int) \getenv('BLACKBOX_SET_SIZE')), + ) ->when( \getenv('ENABLE_COVERAGE') !== false, static fn(Application $app) => $app From cb08aaa0bd308fff5881df935aa624fe57c13299 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Sun, 1 Feb 2026 13:36:27 +0100 Subject: [PATCH 13/14] CS --- src/Facade/Cpu/LinuxFacade.php | 8 ++++---- src/Facade/Cpu/OSXFacade.php | 8 ++++---- src/Facade/Memory/LinuxFacade.php | 6 +++--- src/Server/Disk/Unix.php | 8 ++++---- src/Server/Processes/Logger.php | 6 +++--- src/Server/Processes/Unix.php | 14 +++++++------- src/Servers/Implementation.php | 12 ++++++------ src/Servers/Logger.php | 6 +++--- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/Facade/Cpu/LinuxFacade.php b/src/Facade/Cpu/LinuxFacade.php index 5bf33a0..d5cd1c9 100644 --- a/src/Facade/Cpu/LinuxFacade.php +++ b/src/Facade/Cpu/LinuxFacade.php @@ -3,10 +3,10 @@ namespace Innmind\Server\Status\Facade\Cpu; -use Innmind\Server\Status\{ - Server\Cpu, - Server\Cpu\Percentage, - Server\Cpu\Cores, +use Innmind\Server\Status\Server\{ + Cpu, + Cpu\Percentage, + Cpu\Cores, }; use Innmind\Server\Control\Server\{ Processes, diff --git a/src/Facade/Cpu/OSXFacade.php b/src/Facade/Cpu/OSXFacade.php index 9d537b3..bf30f99 100644 --- a/src/Facade/Cpu/OSXFacade.php +++ b/src/Facade/Cpu/OSXFacade.php @@ -3,10 +3,10 @@ namespace Innmind\Server\Status\Facade\Cpu; -use Innmind\Server\Status\{ - Server\Cpu, - Server\Cpu\Percentage, - Server\Cpu\Cores, +use Innmind\Server\Status\Server\{ + Cpu, + Cpu\Percentage, + Cpu\Cores, }; use Innmind\Server\Control\Server\{ Processes, diff --git a/src/Facade/Memory/LinuxFacade.php b/src/Facade/Memory/LinuxFacade.php index 4113470..fbf7755 100644 --- a/src/Facade/Memory/LinuxFacade.php +++ b/src/Facade/Memory/LinuxFacade.php @@ -3,9 +3,9 @@ namespace Innmind\Server\Status\Facade\Memory; -use Innmind\Server\Status\{ - Server\Memory, - Server\Memory\Bytes, +use Innmind\Server\Status\Server\{ + Memory, + Memory\Bytes, }; use Innmind\Server\Control\Server\{ Processes, diff --git a/src/Server/Disk/Unix.php b/src/Server/Disk/Unix.php index 0b3fd83..d46480d 100644 --- a/src/Server/Disk/Unix.php +++ b/src/Server/Disk/Unix.php @@ -3,10 +3,10 @@ namespace Innmind\Server\Status\Server\Disk; -use Innmind\Server\Status\{ - Server\Disk\Volume\MountPoint, - Server\Disk\Volume\Usage, - Server\Memory\Bytes, +use Innmind\Server\Status\Server\{ + Disk\Volume\MountPoint, + Disk\Volume\Usage, + Memory\Bytes, }; use Innmind\Server\Control\Server\{ Processes, diff --git a/src/Server/Processes/Logger.php b/src/Server/Processes/Logger.php index 5084227..07ddf38 100644 --- a/src/Server/Processes/Logger.php +++ b/src/Server/Processes/Logger.php @@ -3,9 +3,9 @@ namespace Innmind\Server\Status\Server\Processes; -use Innmind\Server\Status\{ - Server\Process, - Server\Process\Pid, +use Innmind\Server\Status\Server\{ + Process, + Process\Pid, }; use Innmind\Time\Format; use Innmind\Immutable\{ diff --git a/src/Server/Processes/Unix.php b/src/Server/Processes/Unix.php index 5f23712..c7012a5 100644 --- a/src/Server/Processes/Unix.php +++ b/src/Server/Processes/Unix.php @@ -3,13 +3,13 @@ namespace Innmind\Server\Status\Server\Processes; -use Innmind\Server\Status\{ - Server\Process, - Server\Process\Pid, - Server\Process\User, - Server\Process\Command, - Server\Process\Memory, - Server\Cpu\Percentage, +use Innmind\Server\Status\Server\{ + Process, + Process\Pid, + Process\User, + Process\Command, + Process\Memory, + Cpu\Percentage, }; use Innmind\Server\Control\Server as Control; use Innmind\Time\{ diff --git a/src/Servers/Implementation.php b/src/Servers/Implementation.php index a1b2c2d..5b567b3 100644 --- a/src/Servers/Implementation.php +++ b/src/Servers/Implementation.php @@ -3,12 +3,12 @@ namespace Innmind\Server\Status\Servers; -use Innmind\Server\Status\{ - Server\Cpu, - Server\Memory, - Server\Processes, - Server\LoadAverage, - Server\Disk, +use Innmind\Server\Status\Server\{ + Cpu, + Memory, + Processes, + LoadAverage, + Disk, }; use Innmind\Immutable\Attempt; diff --git a/src/Servers/Logger.php b/src/Servers/Logger.php index 4318941..e7d3c1d 100644 --- a/src/Servers/Logger.php +++ b/src/Servers/Logger.php @@ -3,9 +3,9 @@ namespace Innmind\Server\Status\Servers; -use Innmind\Server\Status\{ - Server\Processes, - Server\Disk, +use Innmind\Server\Status\Server\{ + Processes, + Disk, }; use Innmind\Immutable\Attempt; use Psr\Log\LoggerInterface; From bc248aacbede386fe32e3a984d92bb43dff974f6 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Sun, 1 Feb 2026 13:37:54 +0100 Subject: [PATCH 14/14] add missing line in the changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e8d928..9d6b036 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - `Innmind\Server\Status\Server\Disk::volumes()` now returns an `Innmind\Immutable\Sequence` - `Innmind\Server\Status\Server\Disk` is now a final class - `Innmind\Server\Status\Server\Processes` is now a final class +- Requires `innmind/time:~1.0` ## 5.0.0 - 2025-05-08