Skip to content

Commit

Permalink
Resolve #218: Add suggested-by flag for console output
Browse files Browse the repository at this point in the history
Signed-off-by: Andreas Frömer <andreas.froemer@check24.de>
  • Loading branch information
Andreas Frömer authored and icanhazstring committed Jan 3, 2022
1 parent 44ca239 commit f83c965
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 5 deletions.
2 changes: 1 addition & 1 deletion composer.json
Expand Up @@ -13,7 +13,7 @@
"authors": [
{
"name": "Andreas Frömer",
"email": "github@icanhazstring.com"
"email": "composer-unused@icanhazstring.com"
}
],
"require": {
Expand Down
20 changes: 16 additions & 4 deletions src/Console/Command/UnusedCommand.php
Expand Up @@ -143,7 +143,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
}

if ($secondRequiredDependency->suggests($requiredDependency)) {
// TODO add "suggested by" in output
$requiredDependency->suggestedBy($secondRequiredDependency);
$requiredDependency->markUsed();
continue 2;
}
Expand Down Expand Up @@ -179,7 +179,7 @@ static function (DependencyInterface $dependency) {
$io->text('<fg=green>Used packages</>');
foreach ($usedDependencyCollection as $usedDependency) {
$requiredBy = '';
// TODO add suggest by dependency
$suggestedBy = '';

if (!empty($usedDependency->getRequiredBy())) {
$requiredByNames = array_map(static function (DependencyInterface $dependency) {
Expand All @@ -192,12 +192,24 @@ static function (DependencyInterface $dependency) {
);
}

if (!empty($usedDependency->getSuggestedBy())) {
$suggestedByNames = array_map(static function (DependencyInterface $dependency) {
return $dependency->getName();
}, $usedDependency->getSuggestedBy());

$requiredBy = sprintf(
' (<fg=cyan>suggested by: %s</>)',
implode(', ', $suggestedByNames)
);
}

$io->writeln(
sprintf(
' <fg=green>%s</> %s%s',
' <fg=green>%s</> %s%s%s',
"\u{2713}",
$usedDependency->getName(),
$requiredBy
$requiredBy,
$suggestedBy
)
);
}
Expand Down
7 changes: 7 additions & 0 deletions src/Dependency/DependencyInterface.php
Expand Up @@ -28,4 +28,11 @@ public function requiredBy(DependencyInterface $dependency): void;
* @return array<DependencyInterface>
*/
public function getRequiredBy(): array;

public function suggestedBy(DependencyInterface $dependency): void;

/**
* @return array<DependencyInterface>
*/
public function getSuggestedBy(): array;
}
9 changes: 9 additions & 0 deletions src/Dependency/InvalidDependency.php
Expand Up @@ -58,4 +58,13 @@ public function getRequiredBy(): array
{
return [];
}

public function suggestedBy(DependencyInterface $dependency): void
{
}

public function getSuggestedBy(): array
{
return [];
}
}
12 changes: 12 additions & 0 deletions src/Dependency/RequiredDependency.php
Expand Up @@ -20,6 +20,8 @@ final class RequiredDependency implements DependencyInterface
private $symbols;
/** @var array<DependencyInterface> */
private $requiredBy = [];
/** @var array<DependencyInterface> */
private $suggestBy = [];

public function __construct(PackageInterface $package, SymbolListInterface $symbols)
{
Expand Down Expand Up @@ -72,4 +74,14 @@ public function getRequiredBy(): array
{
return $this->requiredBy;
}

public function suggestedBy(DependencyInterface $dependency): void
{
$this->suggestBy[$dependency->getName()] = $dependency;
}

public function getSuggestedBy(): array
{
return $this->suggestBy;
}
}

0 comments on commit f83c965

Please sign in to comment.