From: Raphaël Gertz Date: Mon, 4 Mar 2024 15:43:09 +0000 (+0100) Subject: Import Command base class X-Git-Tag: 0.4.0~23 X-Git-Url: https://git.rapsys.eu/packbundle/commitdiff_plain/687a51abbffbe68e2bb6086d1ebd466afe7e4d1e Import Command base class --- diff --git a/Command.php b/Command.php new file mode 100644 index 0000000..0832e2e --- /dev/null +++ b/Command.php @@ -0,0 +1,74 @@ + + * + * 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)); + } +}