X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/f8be49baba0c388737996a8d4489a61c5c07c8b5..0f9cdc265144933e667e912067009211878aa887:/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));
 	}
 }