diff --git a/composer.json b/composer.json index 00147bc..b73d570 100644 --- a/composer.json +++ b/composer.json @@ -29,6 +29,7 @@ "symplify/phpstan-extensions": "^12.0", "symplify/phpstan-rules": "^14.9", "tomasvotruba/class-leak": "^2.1", + "tomasvotruba/unused-public": "^2.1", "tracy/tracy": "^2.11" }, "autoload": { diff --git a/phpstan.neon b/phpstan.neon index 6fde2e3..de7d534 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -8,6 +8,7 @@ parameters: level: 8 paths: + - monitor.php - bin - src - tests diff --git a/src/Compare/Comparator/PHPStanExtensionsComparator.php b/src/Compare/Comparator/PHPStanExtensionsComparator.php index d68eaea..d742f95 100644 --- a/src/Compare/Comparator/PHPStanExtensionsComparator.php +++ b/src/Compare/Comparator/PHPStanExtensionsComparator.php @@ -5,6 +5,7 @@ namespace Rector\Monitor\Compare\Comparator; use Rector\Monitor\Compare\Contract\ComparatorInterface; +use Rector\Monitor\Compare\Enum\PackageNames; use Rector\Monitor\Compare\ValueObject\ProjectMetadata; use Symfony\Component\Console\Style\SymfonyStyle; @@ -26,8 +27,8 @@ public function compare( $this->symfonyStyle->title('PHPStan extensions differences'); - $monorepoPHPStanPackageNames = $monorepoProjectMetadata->getPackagesMatchingName('phpstan'); - $mergePHPStanPackageNames = $mergeProjectMetadata->getPackagesMatchingName('phpstan'); + $monorepoPHPStanPackageNames = $monorepoProjectMetadata->getPackagesByNames(PackageNames::PHPSTAN_EXTENSIONS); + $mergePHPStanPackageNames = $mergeProjectMetadata->getPackagesByNames(PackageNames::PHPSTAN_EXTENSIONS); $monorepoExtraPackages = array_diff($monorepoPHPStanPackageNames, $mergePHPStanPackageNames); $mergeExtraPackages = array_diff($mergePHPStanPackageNames, $monorepoPHPStanPackageNames); diff --git a/src/Compare/Enum/PackageNames.php b/src/Compare/Enum/PackageNames.php new file mode 100644 index 0000000..69434e5 --- /dev/null +++ b/src/Compare/Enum/PackageNames.php @@ -0,0 +1,23 @@ + */ - public function getPackagesMatchingName(string $matchingName): array + public function getPackagesByNames(array $packageNames): array { + Assert::allString($packageNames); + $composerJson = $this->getComposerJson(); $requirePackages = array_merge($composerJson['require'] ?? [], $composerJson['require-dev'] ?? []); - $matchingPackageNames = []; - foreach (array_keys($requirePackages) as $packageName) { - if (! str_contains((string) $packageName, $matchingName)) { + $packagesByNames = []; + foreach ($packageNames as $packageName) { + if (! isset($requirePackages[$packageName])) { continue; } - $matchingPackageNames[] = $packageName; + $packagesByNames[$packageName] = $requirePackages[$packageName]; } - Assert::allString($matchingPackageNames); - - return $matchingPackageNames; + return $packagesByNames; } public function getName(): string diff --git a/src/Config/MonitorConfig.php b/src/Config/MonitorConfig.php index c564aea..63ff6d6 100644 --- a/src/Config/MonitorConfig.php +++ b/src/Config/MonitorConfig.php @@ -65,6 +65,7 @@ public function addRepositories(array $repositories): self } /** + * @api to be used * @param string[] $packageNames */ public function disallowPackages(array $packageNames): self diff --git a/src/ValueObject/ComposerJson.php b/src/ValueObject/ComposerJson.php index 53c5efc..32718cf 100644 --- a/src/ValueObject/ComposerJson.php +++ b/src/ValueObject/ComposerJson.php @@ -42,30 +42,6 @@ public function getPackageVersion(string $packageName): ?string return $this->getBothRequires()[$packageName] ?? null; } - /** - * @return string[] - */ - public function getRequiredRepositories(): array - { - $repositories = []; - - $repositoriesData = $this->composerJson['repositories'] ?? []; - foreach ($repositoriesData as $repositoryData) { - if (! isset($repositoryData['url'])) { - continue; - } - - // not a git repository reference - if (! str_ends_with((string) $repositoryData['url'], '.git')) { - continue; - } - - $repositories[] = $repositoryData['url']; - } - - return $repositories; - } - /** * @return array */ diff --git a/src/ValueObject/RepositoryCollection.php b/src/ValueObject/RepositoryCollection.php index 4e87991..db361a9 100644 --- a/src/ValueObject/RepositoryCollection.php +++ b/src/ValueObject/RepositoryCollection.php @@ -33,20 +33,20 @@ public function getComposerRequiredPackageNames(): array return $this->filterOutExtensions($uniquePackageNames); } - /** - * @return string[] - */ - public function getRepositoryNames(): array - { - $repositoryNames = []; - foreach ($this->repositories as $repository) { - $composerJson = $repository->getComposerJson(); - - $repositoryNames[] = $composerJson->getRepositoryName(); - } - - return $repositoryNames; - } + // /** + // * @return string[] + // */ + // public function getRepositoryNames(): array + // { + // $repositoryNames = []; + // foreach ($this->repositories as $repository) { + // $composerJson = $repository->getComposerJson(); + // + // $repositoryNames[] = $composerJson->getRepositoryName(); + // } + // + // return $repositoryNames; + // } /** * @return string[]