* file that was distributed with this source code.
*/
-namespace Rapsys\AirBundle\Command;
+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;
use Rapsys\PackBundle\Util\SluggerUtil;
+/**
+ * {@inheritdoc}
+ */
class Command extends BaseCommand {
/**
- * Doctrine instance
- *
- * @var ManagerRegistry
- */
- protected ManagerRegistry $doctrine;
-
- /**
- * Router instance
- *
- * @var RouterInterface
- */
- protected RouterInterface $router;
-
- /**
- * Slugger instance
- *
- * @var SluggerUtil
- */
- protected SluggerUtil $slugger;
-
- /**
- * Translator instance
- *
- * @var TranslatorInterface
- */
- protected TranslatorInterface $translator;
-
- /**
- * Locale
+ * {@inheritdoc}
*
- * @var string
- */
- protected string $locale;
-
- /**
* Creates new command
*
* @param ManagerRegistry $doctrine The doctrine instance
* @param TranslatorInterface $translator The translator instance
* @param string $locale The default locale
*/
- public function __construct(ManagerRegistry $doctrine, RouterInterface $router, SluggerUtil $slugger, TranslatorInterface $translator, string $locale) {
- //Call parent constructor
- parent::__construct();
+ 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();
- //Set doctrine
- $this->doctrine = $doctrine;
+ //Call parent constructor
+ parent::__construct($this->name);
- //Set router
- $this->router = $router;
+ //With description
+ if (!empty($this->description)) {
+ //Set description
+ $this->setDescription($this->description);
+ }
- //Set slugger
- $this->slugger = $slugger;
+ //With help
+ if (!empty($this->help)) {
+ //Set help
+ $this->setHelp($this->help);
+ }
//Get router context
$context = $this->router->getContext();
- //Set host
- $context->setHost('airlibre.eu');
+ //Set hostname
+ $context->setHost($_ENV['RAPSYSAIR_HOSTNAME']);
//Set scheme
- $context->setScheme('https');
-
- //Set the translator
- $this->translator = $translator;
-
- //Set locale
- $this->locale = $locale;
-
- //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));
}
}