diff --git a/src/StaticPHP/Command/BuildLibsCommand.php b/src/StaticPHP/Command/BuildLibsCommand.php index a637fe7c..63a3ad0f 100644 --- a/src/StaticPHP/Command/BuildLibsCommand.php +++ b/src/StaticPHP/Command/BuildLibsCommand.php @@ -6,8 +6,10 @@ namespace StaticPHP\Command; use StaticPHP\Artifact\DownloaderOptions; use StaticPHP\Package\PackageInstaller; +use StaticPHP\Registry\PackageLoader; use StaticPHP\Util\V2CompatLayer; use Symfony\Component\Console\Attribute\AsCommand; +use Symfony\Component\Console\Completion\CompletionInput; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; @@ -16,7 +18,19 @@ class BuildLibsCommand extends BaseCommand { public function configure(): void { - $this->addArgument('libraries', InputArgument::REQUIRED, 'The library packages will be compiled, comma separated'); + $this->addArgument( + 'libraries', + InputArgument::REQUIRED, + 'The library packages will be compiled, comma separated', + suggestedValues: function (CompletionInput $input) { + $packages = []; + foreach (PackageLoader::getPackages(['target', 'library']) as $name => $_) { + $packages[] = $name; + } + $val = $input->getCompletionValue(); + return array_filter($packages, fn ($name) => str_starts_with($name, $val)); + } + ); // Builder options $this->getDefinition()->addOptions([ new InputOption('with-suggests', ['L', 'E'], null, 'Resolve and install suggested packages as well'),