diff --git a/module/CLI/config/cli.config.php b/module/CLI/config/cli.config.php index fa9efc69..6e32428a 100644 --- a/module/CLI/config/cli.config.php +++ b/module/CLI/config/cli.config.php @@ -25,6 +25,8 @@ return [ Command\Tag\RenameTagCommand::NAME => Command\Tag\RenameTagCommand::class, Command\Tag\DeleteTagsCommand::NAME => Command\Tag\DeleteTagsCommand::class, + Command\Domain\ListDomainsCommand::NAME => Command\Domain\ListDomainsCommand::class, + Command\Db\CreateDatabaseCommand::NAME => Command\Db\CreateDatabaseCommand::class, Command\Db\MigrateDatabaseCommand::NAME => Command\Db\MigrateDatabaseCommand::class, ], diff --git a/module/CLI/config/dependencies.config.php b/module/CLI/config/dependencies.config.php index 516bbbd4..199d29ef 100644 --- a/module/CLI/config/dependencies.config.php +++ b/module/CLI/config/dependencies.config.php @@ -10,6 +10,7 @@ use Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory; use Laminas\ServiceManager\Factory\InvokableFactory; use Shlinkio\Shlink\CLI\Util\GeolocationDbUpdater; use Shlinkio\Shlink\Common\Doctrine\NoDbNameConnectionFactory; +use Shlinkio\Shlink\Core\Domain\DomainService; use Shlinkio\Shlink\Core\Service; use Shlinkio\Shlink\Core\Tag\TagService; use Shlinkio\Shlink\Core\Visit; @@ -52,6 +53,8 @@ return [ Command\Db\CreateDatabaseCommand::class => ConfigAbstractFactory::class, Command\Db\MigrateDatabaseCommand::class => ConfigAbstractFactory::class, + + Command\Domain\ListDomainsCommand::class => ConfigAbstractFactory::class, ], ], @@ -84,6 +87,8 @@ return [ Command\Tag\RenameTagCommand::class => [TagService::class], Command\Tag\DeleteTagsCommand::class => [TagService::class], + Command\Domain\ListDomainsCommand::class => [DomainService::class, 'config.url_shortener.domain.hostname'], + Command\Db\CreateDatabaseCommand::class => [ LockFactory::class, SymfonyCli\Helper\ProcessHelper::class, diff --git a/module/CLI/src/Command/Domain/ListDomainsCommand.php b/module/CLI/src/Command/Domain/ListDomainsCommand.php new file mode 100644 index 00000000..0368f1dd --- /dev/null +++ b/module/CLI/src/Command/Domain/ListDomainsCommand.php @@ -0,0 +1,49 @@ +domainService = $domainService; + $this->defaultDomain = $defaultDomain; + } + + protected function configure(): void + { + $this + ->setName(self::NAME) + ->setDescription('List all domains that have been ever used for some short URL'); + } + + protected function execute(InputInterface $input, OutputInterface $output): ?int + { + $regularDomains = $this->domainService->listDomainsWithout($this->defaultDomain); + + ShlinkTable::fromOutput($output)->render(['Domain', 'Is default'], [ + [$this->defaultDomain, 'Yes'], + ...map($regularDomains, fn (Domain $domain) => [$domain->getAuthority(), 'No']), + ]); + + return ExitCodes::EXIT_SUCCESS; + } +} diff --git a/module/Rest/src/Action/Domain/ListDomainsAction.php b/module/Rest/src/Action/Domain/ListDomainsAction.php index 682286a1..7362123a 100644 --- a/module/Rest/src/Action/Domain/ListDomainsAction.php +++ b/module/Rest/src/Action/Domain/ListDomainsAction.php @@ -11,7 +11,6 @@ use Shlinkio\Shlink\Core\Domain\DomainServiceInterface; use Shlinkio\Shlink\Core\Entity\Domain; use Shlinkio\Shlink\Rest\Action\AbstractRestAction; -use function Functional\compose; use function Functional\map; class ListDomainsAction extends AbstractRestAction