feat(commands): describe catalog rows per component with package fallback
This commit is contained in:
@@ -31,7 +31,7 @@ final class CatalogCommand extends Command
|
||||
$first ? $package->name . ' (' . $package->version . ')' : '',
|
||||
$name,
|
||||
$installed,
|
||||
$first ? $package->description : '',
|
||||
$package->descriptionOf($name) ?? '',
|
||||
];
|
||||
$first = false;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ final class Component
|
||||
public readonly array $requires = [],
|
||||
public readonly ?string $coreRequires = null,
|
||||
public readonly ?string $coreTested = null,
|
||||
public readonly ?string $description = null,
|
||||
public readonly ?array $destinations = null,
|
||||
public readonly bool $override = false,
|
||||
) {
|
||||
@@ -51,12 +52,22 @@ final class Component
|
||||
}
|
||||
}
|
||||
|
||||
$description = null;
|
||||
if (isset($data['description'])) {
|
||||
if (!is_string($data['description'])) {
|
||||
throw new ToolboxException("El componente '{$name}' tiene un 'description' inválido");
|
||||
}
|
||||
|
||||
$description = $data['description'];
|
||||
}
|
||||
|
||||
return new self(
|
||||
name: $name,
|
||||
files: array_values($data['files']),
|
||||
requires: $requires,
|
||||
coreRequires: $data['core']['requires'] ?? null,
|
||||
coreTested: $data['core']['tested'] ?? null,
|
||||
description: $description,
|
||||
destinations: $destinations,
|
||||
override: (bool) ($data['override'] ?? false),
|
||||
);
|
||||
|
||||
@@ -157,4 +157,17 @@ final class Manifest
|
||||
|
||||
return $this->coreTested;
|
||||
}
|
||||
|
||||
/**
|
||||
* Descripcion efectiva: la propia del componente o, en su ausencia, la del
|
||||
* paquete (mismo patrón de herencia que los rangos de core).
|
||||
*/
|
||||
public function descriptionOf(?string $component = null): ?string
|
||||
{
|
||||
if ($component !== null) {
|
||||
return $this->component($component)->description ?? $this->description;
|
||||
}
|
||||
|
||||
return $this->description;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user