X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/f8be49baba0c388737996a8d4489a61c5c07c8b5..85e3d49aa800d5e289f376023173847e0a2077f0:/Command.php diff --git a/Command.php b/Command.php index 178648c..c775499 100644 --- a/Command.php +++ b/Command.php @@ -12,6 +12,7 @@ namespace Rapsys\AirBundle; use Doctrine\Persistence\ManagerRegistry; + use Symfony\Component\Console\Command\Command as BaseCommand; use Symfony\Component\Routing\RouterInterface; use Symfony\Contracts\Translation\TranslatorInterface; @@ -20,8 +21,13 @@ use Rapsys\AirBundle\RapsysAirBundle; use Rapsys\PackBundle\Util\SluggerUtil; +/** + * {@inheritdoc} + */ class Command extends BaseCommand { /** + * {@inheritdoc} + * * Creates new command * * @param ManagerRegistry $doctrine The doctrine instance @@ -30,39 +36,61 @@ class Command extends BaseCommand { * @param TranslatorInterface $translator The translator instance * @param string $locale The default locale */ - public function __construct(protected ManagerRegistry $doctrine, protected RouterInterface $router, protected SluggerUtil $slugger, protected TranslatorInterface $translator, protected string $locale) { + public function __construct(protected ManagerRegistry $doctrine, protected string $locale, protected RouterInterface $router, protected SluggerUtil $slugger, protected TranslatorInterface $translator, protected ?string $name = null) { + //Fix name + $this->name = $this->name ?? static::getName(); + //Call parent constructor - parent::__construct(); + parent::__construct($this->name); + + //With description + if (!empty($this->description)) { + //Set description + $this->setDescription($this->description); + } + + //With help + if (!empty($this->help)) { + //Set help + $this->setHelp($this->help); + } //Get router context $context = $this->router->getContext(); - //Set host - //TODO: set it in env RAPSYSAIR_HOST ? - $context->setHost('airlibre.eu'); + //Set hostname + $context->setHost($_ENV['RAPSYSAIR_HOSTNAME']); //Set scheme - //TODO: set it in env RAPSYSAIR_SCHEME ? - $context->setScheme('https'); - - //With default name - //TODO: XXX: see how to make it works - /*if (isset(self::$defaultName)) { - $this->name = self::$defaultName; - } - - //With default description - if (isset(self::$defaultDescription)) { - $this->name = self::$defaultDescription; - }*/ + $context->setScheme($_ENV['RAPSYSAIR_SCHEME'] ?? 'https'); } /** - * Return the bundle alias - * * {@inheritdoc} + * + * Return the command name */ - public function getAlias(): string { - return RapsysAirBundle::getAlias(); + public function getName(): string { + //With namespace + if ($npos = strrpos(static::class, '\\')) { + //Set name pos + $npos++; + //Without namespace + } else { + $npos = 0; + } + + //With trailing command + if (substr(static::class, -strlen('Command'), strlen('Command')) === 'Command') { + //Set bundle pos + $bpos = strlen(static::class) - $npos - strlen('Command'); + //Without bundle + } else { + //Set bundle pos + $bpos = strlen(static::class) - $npos; + } + + //Return command alias + return RapsysAirBundle::getAlias().':'.strtolower(substr(static::class, $npos, $bpos)); } }