-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDevToolsCommandProvider.php
More file actions
63 lines (53 loc) · 1.98 KB
/
DevToolsCommandProvider.php
File metadata and controls
63 lines (53 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
declare(strict_types=1);
/**
* Fast Forward Development Tools for PHP projects.
*
* This file is part of fast-forward/dev-tools project.
*
* @author Felipe Sayão Lobato Abreu <github@mentordosnerds.com>
* @license https://opensource.org/licenses/MIT MIT License
*
* @see https://github.com/php-fast-forward/
* @see https://github.com/php-fast-forward/dev-tools
* @see https://github.com/php-fast-forward/dev-tools/issues
* @see https://php-fast-forward.github.io/dev-tools/
* @see https://datatracker.ietf.org/doc/html/rfc2119
*/
namespace FastForward\DevTools\Composer\Capability;
use Composer\Plugin\Capability\CommandProvider;
use FastForward\DevTools\Composer\Command\ProxyCommand;
use FastForward\DevTools\Console\DevTools;
/**
* Provides a registry of custom dev-tools commands mapped for Composer integration.
* This capability struct MUST implement the defined `CommandProvider`.
*/
final class DevToolsCommandProvider implements CommandProvider
{
/**
* @var string the namespace prefix for dev-tools console commands to be registered as Composer commands
*/
private const string COMMAND_NAMESPACE = 'FastForward\DevTools\Console\Command';
/**
* {@inheritDoc}
*/
public function getCommands()
{
$commands = [];
foreach (DevTools::create()->all() as $registeredName => $command) {
/**
* Composer plugin registrations must be canonicalized to one command per Symfony command.
* The application exposes alias keys in `all()`, but Composer interprets each entry as
* an independent command and emits override warnings.
*/
if ($registeredName !== $command->getName()) {
continue;
}
if (! str_starts_with($command::class, self::COMMAND_NAMESPACE)) {
continue;
}
$commands[] = new ProxyCommand($command);
}
return $commands;
}
}