From f007e78605f2e63ee03ac6e27df134b555d84be3 Mon Sep 17 00:00:00 2001 From: MarcoMC Date: Wed, 2 Aug 2023 18:00:43 +0200 Subject: [PATCH 1/4] MISC Intial draft of the `herness list` command --- .../Harness/Repository/PackageRepository.php | 16 ++++++++++++++++ src/Types/Workspace/Builder.php | 18 +++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/Types/Harness/Repository/PackageRepository.php b/src/Types/Harness/Repository/PackageRepository.php index f8e5f566..72700a1d 100644 --- a/src/Types/Harness/Repository/PackageRepository.php +++ b/src/Types/Harness/Repository/PackageRepository.php @@ -67,6 +67,22 @@ public function get(string $package): Package ]); } + public function getAllPackages(): array + { + $this->importPackagesFromSources(); + $this->packages; + + $availablePackages = array_keys($this->packages); + + // $candidate = null; + foreach ($availablePackages as $availablePackage) { + $availableVersions = array_keys($this->packages[$availablePackage]); + // foreach ($availableVersions as $availableVersion) { + // should I write here the code the print the table of Harnes, version 1.x, Version 2.x , version x.y etc... ? + // } + } + } + public function addPackage(string $name, string $version, array $dist): void { $this->mustParseVersionString($version); diff --git a/src/Types/Workspace/Builder.php b/src/Types/Workspace/Builder.php index ce5a398b..a186829d 100644 --- a/src/Types/Workspace/Builder.php +++ b/src/Types/Workspace/Builder.php @@ -17,6 +17,7 @@ use my127\Workspace\Types\Attribute\Collection as AttributeCollection; use my127\Workspace\Types\Confd\Definition as ConfdDefinition; use my127\Workspace\Types\Harness\Definition as HarnessDefinition; +use my127\Workspace\Types\Harness\Repository\PackageRepository; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Filesystem\Path; use Symfony\Component\Yaml\Yaml; @@ -33,6 +34,11 @@ class Builder extends Workspace implements EnvironmentBuilder, EventSubscriberIn */ private $workspace; + /** + * @var PackageRepository + */ + private $packageRepository; + /** * @var PHPExecutor */ @@ -48,13 +54,14 @@ class Builder extends Workspace implements EnvironmentBuilder, EventSubscriberIn */ private $expression; - public function __construct(Application $application, Workspace $workspace, PHPExecutor $phpExecutor, AttributeCollection $attributes, Expression $expression) + public function __construct(Application $application, AttributeCollection $attributes, Expression $expression, PackageRepository $packageRepository, PHPExecutor $phpExecutor, Workspace $workspace) { $this->application = $application; - $this->workspace = $workspace; - $this->phpExecutor = $phpExecutor; $this->attributes = $attributes; $this->expression = $expression; + $this->packageRepository = $packageRepository; + $this->phpExecutor = $phpExecutor; + $this->workspace = $workspace; } public function build(Environment $environment, DefinitionCollection $definitions) @@ -139,6 +146,11 @@ public function build(Environment $environment, DefinitionCollection $definition $this->workspace->run('install --step=prepare'); }); } + $this->application->section('harness list') + ->usage('harness list') + ->action(function (Input $input) { + $this->packageRepository->getAllPackages(); + }); $this->application->section('config dump') ->option('--key= Attribute key to dump.') From 9baab366e80cd03453da494ef66e515560497e77 Mon Sep 17 00:00:00 2001 From: MarcoMC Date: Wed, 2 Aug 2023 19:04:39 +0200 Subject: [PATCH 2/4] MISC add test and just return the packages array --- src/Types/Harness/Repository/PackageRepository.php | 10 +++++----- .../Harness/Repository/PackageRepositoryTest.php | 11 +++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/Types/Harness/Repository/PackageRepository.php b/src/Types/Harness/Repository/PackageRepository.php index 72700a1d..deb2e349 100644 --- a/src/Types/Harness/Repository/PackageRepository.php +++ b/src/Types/Harness/Repository/PackageRepository.php @@ -70,17 +70,17 @@ public function get(string $package): Package public function getAllPackages(): array { $this->importPackagesFromSources(); - $this->packages; - $availablePackages = array_keys($this->packages); + // $availablePackages = array_keys($this->packages); // $candidate = null; - foreach ($availablePackages as $availablePackage) { - $availableVersions = array_keys($this->packages[$availablePackage]); + // foreach ($availablePackages as $availablePackage) { + // $availableVersions = array_keys($this->packages[$availablePackage]); // foreach ($availableVersions as $availableVersion) { // should I write here the code the print the table of Harnes, version 1.x, Version 2.x , version x.y etc... ? // } - } + // } + return $this->packages; } public function addPackage(string $name, string $version, array $dist): void diff --git a/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php b/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php index bb52d2e5..2b290a97 100644 --- a/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php +++ b/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php @@ -40,7 +40,18 @@ public function itGetsAPackage(): void self::assertEquals('bar', $package->getName()); self::assertEquals('v1.0.0', $package->getVersion()); } + /** @test */ + public function itGetsAllPackages(): void + { + $repository = $this->createRepository(); + $repository->addPackage('foo/bar', 'v1.0.0', []); + $repository->addPackage('foo/bar', 'v2.0.0', []); + $repository->addPackage('foo/bar2', 'v1.0.0', []); + $repository->addPackage('foo/bar3', 'v.0.0', []); + $repository->getAllPackages(); + self::assertEquals(4, count($repository)); + } /** @test */ public function itImportsPackageFromSource(): void { From d7442fadc7031af5f470eb200463fb748b64ab83 Mon Sep 17 00:00:00 2001 From: MarcoMC Date: Wed, 2 Aug 2023 19:39:56 +0200 Subject: [PATCH 3/4] MISC improve PackageRepository test --- .../Repository/PackageRepositoryTest.php | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php b/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php index 2b290a97..17a35889 100644 --- a/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php +++ b/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php @@ -40,17 +40,27 @@ public function itGetsAPackage(): void self::assertEquals('bar', $package->getName()); self::assertEquals('v1.0.0', $package->getVersion()); } + /** @test */ - public function itGetsAllPackages(): void + public function itGetsAllPackagesAndVersions(): void { $repository = $this->createRepository(); $repository->addPackage('foo/bar', 'v1.0.0', []); - $repository->addPackage('foo/bar', 'v2.0.0', []); $repository->addPackage('foo/bar2', 'v1.0.0', []); - $repository->addPackage('foo/bar3', 'v.0.0', []); - $repository->getAllPackages(); - - self::assertEquals(4, count($repository)); + $repository->addPackage('foo/bar2', 'v2.0.0', []); + $repository->addPackage('foo/bar3', 'v1.0.0', []); + $repository->addPackage('foo/bar3', 'v2.0.0', []); + $repository->addPackage('foo/bar3', 'v3.0.0', []); + $packages = $repository->getAllPackages(); + + self::assertEquals(true, is_array($packages)); + self::assertCount(3, $packages); + $availableVersions = array_keys($packages['foo/bar']); + self::assertCount(1, $availableVersions); + $availableVersions = array_keys($packages['foo/bar2']); + self::assertCount(2, $availableVersions); + $availableVersions = array_keys($packages['foo/bar3']); + self::assertCount(3, $availableVersions); } /** @test */ public function itImportsPackageFromSource(): void From e19fc1615b6f28d3904bd15ee24f3a1496746882 Mon Sep 17 00:00:00 2001 From: MarcoMC Date: Thu, 3 Aug 2023 17:18:22 +0200 Subject: [PATCH 4/4] MISC fix php-cs errors in tests --- src/Types/Harness/Repository/PackageRepository.php | 6 +++--- .../Types/Harness/Repository/PackageRepositoryTest.php | 9 ++++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Types/Harness/Repository/PackageRepository.php b/src/Types/Harness/Repository/PackageRepository.php index deb2e349..d94beeaa 100644 --- a/src/Types/Harness/Repository/PackageRepository.php +++ b/src/Types/Harness/Repository/PackageRepository.php @@ -76,9 +76,9 @@ public function getAllPackages(): array // $candidate = null; // foreach ($availablePackages as $availablePackage) { // $availableVersions = array_keys($this->packages[$availablePackage]); - // foreach ($availableVersions as $availableVersion) { - // should I write here the code the print the table of Harnes, version 1.x, Version 2.x , version x.y etc... ? - // } + // foreach ($availableVersions as $availableVersion) { + // # should I write here the code the print the table of Harnes, version 1.x, Version 2.x , version x.y etc... ? + // } // } return $this->packages; } diff --git a/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php b/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php index 17a35889..35fc01db 100644 --- a/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php +++ b/tests/Test/Types/Harness/Repository/PackageRepositoryTest.php @@ -52,16 +52,23 @@ public function itGetsAllPackagesAndVersions(): void $repository->addPackage('foo/bar3', 'v2.0.0', []); $repository->addPackage('foo/bar3', 'v3.0.0', []); $packages = $repository->getAllPackages(); - + self::assertEquals(true, is_array($packages)); self::assertCount(3, $packages); + $availableVersions = array_keys($packages['foo/bar']); + self::assertCount(1, $availableVersions); + $availableVersions = array_keys($packages['foo/bar2']); + self::assertCount(2, $availableVersions); + $availableVersions = array_keys($packages['foo/bar3']); + self::assertCount(3, $availableVersions); } + /** @test */ public function itImportsPackageFromSource(): void {