X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/63f450314124eeb396ac4c1513084e54bfc0d55e..1e5dcfe93fb41957381b5ed485ad3e49b1ea7b50:/Command.php

diff --git a/Command.php b/Command.php
index 6f4a8ee..c775499 100644
--- a/Command.php
+++ b/Command.php
@@ -9,9 +9,10 @@
  * 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;
@@ -20,43 +21,13 @@ use Rapsys\AirBundle\RapsysAirBundle;
 
 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
@@ -65,52 +36,61 @@ class Command extends BaseCommand {
 	 * @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));
 	}
 }