diff --git a/src/EnvironmentPath.php b/src/EnvironmentPath.php index 83306fa..a59edbb 100644 --- a/src/EnvironmentPath.php +++ b/src/EnvironmentPath.php @@ -8,11 +8,9 @@ */ final class EnvironmentPath { - private string $value; - - private function __construct(string $value) - { - $this->value = $value; + private function __construct( + private string $value, + ) { } /** diff --git a/src/Facade/Cpu/LinuxFacade.php b/src/Facade/Cpu/LinuxFacade.php index 30749ab..4c35e87 100644 --- a/src/Facade/Cpu/LinuxFacade.php +++ b/src/Facade/Cpu/LinuxFacade.php @@ -25,11 +25,9 @@ */ final class LinuxFacade { - private Processes $processes; - - public function __construct(Processes $processes) - { - $this->processes = $processes; + public function __construct( + private Processes $processes, + ) { } /** diff --git a/src/Facade/Cpu/OSXFacade.php b/src/Facade/Cpu/OSXFacade.php index 3a09b94..b6d92a0 100644 --- a/src/Facade/Cpu/OSXFacade.php +++ b/src/Facade/Cpu/OSXFacade.php @@ -25,11 +25,9 @@ */ final class OSXFacade { - private Processes $processes; - - public function __construct(Processes $processes) - { - $this->processes = $processes; + public function __construct( + private Processes $processes, + ) { } /** diff --git a/src/Facade/Memory/LinuxFacade.php b/src/Facade/Memory/LinuxFacade.php index 3a8c7a4..942a8f4 100644 --- a/src/Facade/Memory/LinuxFacade.php +++ b/src/Facade/Memory/LinuxFacade.php @@ -32,11 +32,9 @@ final class LinuxFacade 'SwapCached' => 'swap', ]; - private Processes $processes; - - public function __construct(Processes $processes) - { - $this->processes = $processes; + public function __construct( + private Processes $processes, + ) { } /** diff --git a/src/Facade/Memory/OSXFacade.php b/src/Facade/Memory/OSXFacade.php index a094fab..32cb132 100644 --- a/src/Facade/Memory/OSXFacade.php +++ b/src/Facade/Memory/OSXFacade.php @@ -24,13 +24,10 @@ */ final class OSXFacade { - private Processes $processes; - private EnvironmentPath $path; - - public function __construct(Processes $processes, EnvironmentPath $path) - { - $this->processes = $processes; - $this->path = $path; + public function __construct( + private Processes $processes, + private EnvironmentPath $path, + ) { } /** diff --git a/src/Server/Disk/LoggerDisk.php b/src/Server/Disk/Logger.php similarity index 87% rename from src/Server/Disk/LoggerDisk.php rename to src/Server/Disk/Logger.php index cc3bd7c..aafab47 100644 --- a/src/Server/Disk/LoggerDisk.php +++ b/src/Server/Disk/Logger.php @@ -13,15 +13,12 @@ }; use Psr\Log\LoggerInterface; -final class LoggerDisk implements Disk +final class Logger implements Disk { - private Disk $disk; - private LoggerInterface $logger; - - private function __construct(Disk $disk, LoggerInterface $logger) - { - $this->disk = $disk; - $this->logger = $logger; + private function __construct( + private Disk $disk, + private LoggerInterface $logger, + ) { } /** diff --git a/src/Server/Disk/UnixDisk.php b/src/Server/Disk/Unix.php similarity index 92% rename from src/Server/Disk/UnixDisk.php rename to src/Server/Disk/Unix.php index 2f180e0..158e00a 100644 --- a/src/Server/Disk/UnixDisk.php +++ b/src/Server/Disk/Unix.php @@ -23,7 +23,7 @@ Monoid\Concat, }; -final class UnixDisk implements Disk +final class Unix implements Disk { private static array $columns = [ 'Size' => 'size', @@ -34,11 +34,9 @@ final class UnixDisk implements Disk 'Mounted' => 'mountPoint', ]; - private Processes $processes; - - private function __construct(Processes $processes) - { - $this->processes = $processes; + private function __construct( + private Processes $processes, + ) { } /** @@ -68,10 +66,9 @@ public function volumes(): Set ->fold(new Concat), ) ->map($this->parse(...)) - ->match( - static fn($volumes) => $volumes, - static fn() => Set::of(), - ); + ->toSequence() + ->toSet() + ->flatMap(static fn($volumes) => $volumes); } #[\Override] diff --git a/src/Server/Memory/Bytes.php b/src/Server/Memory/Bytes.php index ba7682b..2273bf5 100644 --- a/src/Server/Memory/Bytes.php +++ b/src/Server/Memory/Bytes.php @@ -3,6 +3,7 @@ namespace Innmind\Server\Status\Server\Memory; +use Innmind\IO\Stream\Size; use Innmind\Validation\Is; use Innmind\Immutable\{ Str, @@ -50,29 +51,7 @@ public function toInt(): int public function toString(): string { - return match (true) { - $this->value < self::BYTES => $this->value.'B', - $this->value < self::KILOBYTES => \sprintf( - '%sKB', - \round($this->value/self::BYTES, 3), - ), - $this->value < self::MEGABYTES => \sprintf( - '%sMB', - \round($this->value/self::KILOBYTES, 3), - ), - $this->value < self::GIGABYTES => \sprintf( - '%sGB', - \round($this->value/self::MEGABYTES, 3), - ), - $this->value < self::TERABYTES => \sprintf( - '%sTB', - \round($this->value/self::GIGABYTES, 3), - ), - $this->value < self::PETABYTES => \sprintf( - '%sPB', - \round($this->value/self::TERABYTES, 3), - ), - }; + return Size::of($this->value)->toString(); } /** diff --git a/src/Server/Processes/LoggerProcesses.php b/src/Server/Processes/Logger.php similarity index 87% rename from src/Server/Processes/LoggerProcesses.php rename to src/Server/Processes/Logger.php index 88d7f46..7003528 100644 --- a/src/Server/Processes/LoggerProcesses.php +++ b/src/Server/Processes/Logger.php @@ -15,15 +15,12 @@ }; use Psr\Log\LoggerInterface; -final class LoggerProcesses implements Processes +final class Logger implements Processes { - private Processes $processes; - private LoggerInterface $logger; - - private function __construct(Processes $processes, LoggerInterface $logger) - { - $this->processes = $processes; - $this->logger = $logger; + private function __construct( + private Processes $processes, + private LoggerInterface $logger, + ) { } /** diff --git a/src/Server/Processes/UnixProcesses.php b/src/Server/Processes/Unix.php similarity index 78% rename from src/Server/Processes/UnixProcesses.php rename to src/Server/Processes/Unix.php index 2a79ff9..cb285dd 100644 --- a/src/Server/Processes/UnixProcesses.php +++ b/src/Server/Processes/Unix.php @@ -26,15 +26,12 @@ Monoid\Concat, }; -final class UnixProcesses implements Processes +final class Unix implements Processes { - private Clock $clock; - private Control\Processes $processes; - - private function __construct(Clock $clock, Control\Processes $processes) - { - $this->clock = $clock; - $this->processes = $processes; + private function __construct( + private Clock $clock, + private Control\Processes $processes, + ) { } /** @@ -54,10 +51,9 @@ public function all(): Set ->withShortOption('eo', $this->format()), ) ->map($this->parse(...)) - ->match( - static fn($processes) => $processes, - static fn() => Set::of(), - ); + ->toSequence() + ->toSet() + ->flatMap(static fn($processes) => $processes); } #[\Override] @@ -140,26 +136,17 @@ private function parse(Str $output): Set ->get(4) ->keep(Is::string()->nonEmpty()->asPredicate()) ->map(Command::of(...)); + $start = Maybe::just( + $this->clock->at($start, Format::of('D M j H:i:s Y')), + ); - return Maybe::all($user, $pid, $percentage, $memory, $command) - ->map(fn(User $user, Pid $pid, Percentage $percentage, Memory $memory, Command $command) => Process::of( - $pid, - $user, - $percentage, - $memory, - $this->clock->at($start, Format::of('D M j H:i:s Y')), - $command, - )); + return Maybe::all($pid, $user, $percentage, $memory, $start, $command) + ->map(Process::of(...)); }); - /** @var Set */ - return $processes->reduce( - Set::of(), - static fn(Set $processes, Maybe $process): Set => $process->match( - static fn(Process $process) => ($processes)($process), - static fn() => $processes, - ), - ); + return $processes + ->flatMap(static fn($process) => $process->toSequence()) // discard process that failed to be parsed + ->toSet(); } private function format(): string diff --git a/src/Servers/Linux.php b/src/Servers/Linux.php index ee9d919..30dc344 100644 --- a/src/Servers/Linux.php +++ b/src/Servers/Linux.php @@ -9,9 +9,7 @@ Facade\Cpu\LinuxFacade as CpuFacade, Facade\Memory\LinuxFacade as MemoryFacade, Facade\LoadAverage\PhpFacade as LoadAverageFacade, - Server\Processes\UnixProcesses, Server\Disk, - Server\Disk\UnixDisk, }; use Innmind\Server\Control\Server as Control; use Innmind\TimeContinuum\Clock; @@ -22,17 +20,17 @@ final class Linux implements Server { private CpuFacade $cpu; private MemoryFacade $memory; - private UnixProcesses $processes; + private Processes\Unix $processes; private LoadAverageFacade $loadAverage; - private UnixDisk $disk; + private Disk\Unix $disk; private function __construct(Clock $clock, Control $control) { $this->cpu = new CpuFacade($control->processes()); $this->memory = new MemoryFacade($control->processes()); - $this->processes = UnixProcesses::of($clock, $control->processes()); + $this->processes = Processes\Unix::of($clock, $control->processes()); $this->loadAverage = new LoadAverageFacade; - $this->disk = UnixDisk::of($control->processes()); + $this->disk = Disk\Unix::of($control->processes()); } /** diff --git a/src/Servers/Logger.php b/src/Servers/Logger.php index bf33746..ade1eb8 100644 --- a/src/Servers/Logger.php +++ b/src/Servers/Logger.php @@ -14,13 +14,10 @@ final class Logger implements Server { - private Server $server; - private LoggerInterface $logger; - - private function __construct(Server $server, LoggerInterface $logger) - { - $this->server = $server; - $this->logger = $logger; + private function __construct( + private Server $server, + private LoggerInterface $logger, + ) { } public static function of(Server $server, LoggerInterface $logger): self @@ -63,7 +60,7 @@ public function memory(): Attempt #[\Override] public function processes(): Processes { - return Processes\LoggerProcesses::of( + return Processes\Logger::of( $this->server->processes(), $this->logger, ); @@ -86,7 +83,7 @@ public function loadAverage(): Attempt #[\Override] public function disk(): Disk { - return Disk\LoggerDisk::of( + return Disk\Logger::of( $this->server->disk(), $this->logger, ); diff --git a/src/Servers/OSX.php b/src/Servers/OSX.php index b2eb503..aecf206 100644 --- a/src/Servers/OSX.php +++ b/src/Servers/OSX.php @@ -9,9 +9,7 @@ Facade\Cpu\OSXFacade as CpuFacade, Facade\Memory\OSXFacade as MemoryFacade, Facade\LoadAverage\PhpFacade as LoadAverageFacade, - Server\Processes\UnixProcesses, Server\Disk, - Server\Disk\UnixDisk, EnvironmentPath, }; use Innmind\Server\Control\Server as Control; @@ -23,17 +21,17 @@ final class OSX implements Server { private CpuFacade $cpu; private MemoryFacade $memory; - private UnixProcesses $processes; + private Processes\Unix $processes; private LoadAverageFacade $loadAverage; - private UnixDisk $disk; + private Disk\Unix $disk; private function __construct(Clock $clock, Control $control, EnvironmentPath $path) { $this->cpu = new CpuFacade($control->processes()); $this->memory = new MemoryFacade($control->processes(), $path); - $this->processes = UnixProcesses::of($clock, $control->processes()); + $this->processes = Processes\Unix::of($clock, $control->processes()); $this->loadAverage = new LoadAverageFacade; - $this->disk = UnixDisk::of($control->processes()); + $this->disk = Disk\Unix::of($control->processes()); } /** diff --git a/tests/Server/Disk/LoggerDiskTest.php b/tests/Server/Disk/LoggerDiskTest.php index e0e2bfb..77d43dd 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\LoggerDisk, + Server\Disk\Logger, Server\Disk, Server\Disk\Volume, Server\Disk\Volume\MountPoint, @@ -23,7 +23,7 @@ class LoggerDiskTest extends TestCase { public function testInterface() { - $this->assertInstanceOf(Disk::class, LoggerDisk::of( + $this->assertInstanceOf(Disk::class, Logger::of( $this->disk(), new NullLogger, )); @@ -31,14 +31,14 @@ public function testInterface() public function testVolumes() { - $disk = LoggerDisk::of($this->disk(), new NullLogger); + $disk = Logger::of($this->disk(), new NullLogger); $this->assertInstanceOf(Set::class, $disk->volumes()); } public function testGet() { - $disk = LoggerDisk::of($this->disk(), new NullLogger); + $disk = Logger::of($this->disk(), new NullLogger); $this->assertInstanceOf(Volume::class, $disk->get(MountPoint::of('/'))->match( static fn($volume) => $volume, diff --git a/tests/Server/Disk/UnixDiskTest.php b/tests/Server/Disk/UnixDiskTest.php index 0806c57..d381420 100644 --- a/tests/Server/Disk/UnixDiskTest.php +++ b/tests/Server/Disk/UnixDiskTest.php @@ -4,7 +4,7 @@ namespace Tests\Innmind\Server\Status\Server\Disk; use Innmind\Server\Status\{ - Server\Disk\UnixDisk, + Server\Disk\Unix, Server\Disk, Server\Disk\Volume, Server\Disk\Volume\MountPoint, @@ -22,7 +22,7 @@ class UnixDiskTest extends TestCase public function setUp(): void { - $this->disk = UnixDisk::of( + $this->disk = Unix::of( Control::build( Clock::live(), IO::fromAmbientAuthority(), diff --git a/tests/Server/Processes/LoggerProcessesTest.php b/tests/Server/Processes/LoggerProcessesTest.php index 13f5d48..2e4b38c 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\LoggerProcesses, + Server\Processes\Logger, Server\Processes, Server\Process, Server\Process\Pid, @@ -23,7 +23,7 @@ class LoggerProcessesTest extends TestCase { public function testInterface() { - $this->assertInstanceOf(Processes::class, LoggerProcesses::of( + $this->assertInstanceOf(Processes::class, Logger::of( $this->processes(), new NullLogger, )); @@ -31,14 +31,14 @@ public function testInterface() public function testAll() { - $processes = LoggerProcesses::of($this->processes(), new NullLogger); + $processes = Logger::of($this->processes(), new NullLogger); $this->assertInstanceOf(Set::class, $processes->all()); } public function testGet() { - $processes = LoggerProcesses::of($this->processes(), new NullLogger); + $processes = Logger::of($this->processes(), new NullLogger); $this->assertInstanceOf(Process::class, $processes->get(Pid::of(1))->match( static fn($process) => $process, diff --git a/tests/Server/Processes/UnixProcessesTest.php b/tests/Server/Processes/UnixProcessesTest.php index 992e671..f30eab6 100644 --- a/tests/Server/Processes/UnixProcessesTest.php +++ b/tests/Server/Processes/UnixProcessesTest.php @@ -4,7 +4,7 @@ namespace Tests\Innmind\Server\Status\Server\Processes; use Innmind\Server\Status\{ - Server\Processes\UnixProcesses, + Server\Processes\Unix, Server\Processes, Server\Process, Server\Process\Pid, @@ -25,7 +25,7 @@ class UnixProcessesTest extends TestCase public function setUp(): void { - $this->processes = UnixProcesses::of( + $this->processes = Unix::of( Clock::live(), Control::build( Clock::live(), diff --git a/tests/Servers/LoggerTest.php b/tests/Servers/LoggerTest.php index 0643f85..abbf52e 100644 --- a/tests/Servers/LoggerTest.php +++ b/tests/Servers/LoggerTest.php @@ -59,7 +59,7 @@ public function testProcesses() new NullLogger, ); - $this->assertInstanceOf(Processes\LoggerProcesses::class, $server->processes()); + $this->assertInstanceOf(Processes\Logger::class, $server->processes()); } public function testLoadAverage() @@ -76,7 +76,7 @@ public function testDisk() new NullLogger, ); - $this->assertInstanceOf(Disk\LoggerDisk::class, $server->disk()); + $this->assertInstanceOf(Disk\Logger::class, $server->disk()); } public function testTmp()