]> Raphaël G. Git Repositories - packbundle/commitdiff
Import Command base class
authorRaphaël Gertz <git@rapsys.eu>
Mon, 4 Mar 2024 15:43:09 +0000 (16:43 +0100)
committerRaphaël Gertz <git@rapsys.eu>
Mon, 4 Mar 2024 15:43:09 +0000 (16:43 +0100)
Command.php [new file with mode: 0644]

diff --git a/Command.php b/Command.php
new file mode 100644 (file)
index 0000000..0832e2e
--- /dev/null
@@ -0,0 +1,74 @@
+<?php declare(strict_types=1);
+
+/*
+ * This file is part of the Rapsys PackBundle package.
+ *
+ * (c) Raphaël Gertz <symfony@rapsys.eu>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Rapsys\PackBundle;
+
+use Symfony\Component\Console\Command\Command as BaseCommand;
+use Symfony\Component\DependencyInjection\Container;
+
+use Rapsys\PackBundle\RapsysPackBundle;
+
+/**
+ * {@inheritdoc}
+ */
+class Command extends BaseCommand {
+       /**
+        * {@inheritdoc}
+        */
+    public function __construct(protected ?string $name = null) {
+               //Fix name
+               $this->name = $this->name ?? static::getName();
+
+               //Call parent constructor
+               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);
+               }
+       }
+
+       /**
+        * Return the command name
+        *
+        * {@inheritdoc}
+        */
+       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 RapsysPackBundle::getAlias().':'.strtolower(substr(static::class, $npos, $bpos));
+       }
+}