Как композитор разрешает команду `dumpautoload`? - PullRequest
0 голосов
/ 24 сентября 2019

При использовании Composer version 1.8.6 2019-06-11 15:03:05 команда dumpautoload работает со всеми следующими вариантами

composer dump-autoload
composer dumpautoload
composer dumpautoloa
composer dumpautolo
composer dumpautol
composer dumpauto
composer dumpaut
composer dumpau
composer dumpa
composer dump
composer dum
composer du

До composer d, которая выдает

[Symfony \ Component \ Console \ Exception\ CommandNotFoundException]
Команда "d" неоднозначна (зависит от дампа-автозагрузки и еще 1).

Как разрешаются команды?Я понимаю, что dumpautoload установлен как псевдоним dump-autoload в источнике композитора здесь

class DumpAutoloadCommand extends BaseCommand
{
   protected function configure()
   {
      $this->setName('dump-autoload')->setAliases(array('dumpautoload'))

и setAliases в composer/RootPackage.php источнике здесь присваивайте псевдонимы только свойству private $aliases;

public function setAliases(array $aliases)
{
    $this->aliases = $aliases;
}

Но как разрешаются другие варианты?

1 Ответ

2 голосов
/ 24 сентября 2019

Composer создается на symfony/console, а код для поиска команды находится в Symfony\Component\Console\Application::find, который можно найти на https://github.com/symfony/console/blob/master/Application.php#L596. В основном все зарегистрированные команды проверяются до самой короткой, четко идентифицируемойдлина - поэтому подход с similar_text уже слишком сложен;)

...