Ensured symfony/console stays in v4.1.4, since the next one throws a lot of phpstan errors

This commit is contained in:
Alejandro Celaya 2018-09-30 11:02:01 +02:00
parent 0813df6b29
commit 3282bfd03b
11 changed files with 53 additions and 42 deletions

View File

@ -27,7 +27,7 @@
"mikehaertl/phpwkhtmltopdf": "^2.2", "mikehaertl/phpwkhtmltopdf": "^2.2",
"monolog/monolog": "^1.21", "monolog/monolog": "^1.21",
"roave/security-advisories": "dev-master", "roave/security-advisories": "dev-master",
"symfony/console": "^4.0", "symfony/console": "^4.0 <4.1.5",
"symfony/filesystem": "^4.0", "symfony/filesystem": "^4.0",
"symfony/process": "^4.0", "symfony/process": "^4.0",
"theorchard/monolog-cascade": "^0.4", "theorchard/monolog-cascade": "^0.4",

View File

@ -10,10 +10,11 @@ use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Style\SymfonyStyle;
use Zend\I18n\Translator\TranslatorInterface; use Zend\I18n\Translator\TranslatorInterface;
use function sprintf;
class DisableKeyCommand extends Command class DisableKeyCommand extends Command
{ {
const NAME = 'api-key:disable'; public const NAME = 'api-key:disable';
/** /**
* @var ApiKeyServiceInterface * @var ApiKeyServiceInterface
@ -31,14 +32,14 @@ class DisableKeyCommand extends Command
parent::__construct(); parent::__construct();
} }
public function configure() protected function configure(): void
{ {
$this->setName(self::NAME) $this->setName(self::NAME)
->setDescription($this->translator->translate('Disables an API key.')) ->setDescription($this->translator->translate('Disables an API key.'))
->addArgument('apiKey', InputArgument::REQUIRED, $this->translator->translate('The API key to disable')); ->addArgument('apiKey', InputArgument::REQUIRED, $this->translator->translate('The API key to disable'));
} }
public function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$apiKey = $input->getArgument('apiKey'); $apiKey = $input->getArgument('apiKey');
$io = new SymfonyStyle($input, $output); $io = new SymfonyStyle($input, $output);

View File

@ -11,10 +11,11 @@ use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Style\SymfonyStyle;
use Zend\I18n\Translator\TranslatorInterface; use Zend\I18n\Translator\TranslatorInterface;
use function sprintf;
class GenerateKeyCommand extends Command class GenerateKeyCommand extends Command
{ {
const NAME = 'api-key:generate'; public const NAME = 'api-key:generate';
/** /**
* @var ApiKeyServiceInterface * @var ApiKeyServiceInterface
@ -32,7 +33,7 @@ class GenerateKeyCommand extends Command
parent::__construct(); parent::__construct();
} }
public function configure() protected function configure(): void
{ {
$this->setName(self::NAME) $this->setName(self::NAME)
->setDescription($this->translator->translate('Generates a new valid API key.')) ->setDescription($this->translator->translate('Generates a new valid API key.'))
@ -44,7 +45,7 @@ class GenerateKeyCommand extends Command
); );
} }
public function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$expirationDate = $input->getOption('expirationDate'); $expirationDate = $input->getOption('expirationDate');
$apiKey = $this->apiKeyService->create(isset($expirationDate) ? Chronos::parse($expirationDate) : null); $apiKey = $this->apiKeyService->create(isset($expirationDate) ? Chronos::parse($expirationDate) : null);

View File

@ -11,6 +11,8 @@ use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Style\SymfonyStyle;
use Zend\I18n\Translator\TranslatorInterface; use Zend\I18n\Translator\TranslatorInterface;
use function array_filter;
use function sprintf;
class ListKeysCommand extends Command class ListKeysCommand extends Command
{ {
@ -36,7 +38,7 @@ class ListKeysCommand extends Command
parent::__construct(); parent::__construct();
} }
public function configure() protected function configure(): void
{ {
$this->setName(self::NAME) $this->setName(self::NAME)
->setDescription($this->translator->translate('Lists all the available API keys.')) ->setDescription($this->translator->translate('Lists all the available API keys.'))
@ -48,7 +50,7 @@ class ListKeysCommand extends Command
); );
} }
public function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$io = new SymfonyStyle($input, $output); $io = new SymfonyStyle($input, $output);
$enabledOnly = $input->getOption('enabledOnly'); $enabledOnly = $input->getOption('enabledOnly');
@ -62,16 +64,16 @@ class ListKeysCommand extends Command
$messagePattern = $this->determineMessagePattern($row); $messagePattern = $this->determineMessagePattern($row);
// Set columns for this row // Set columns for this row
$rowData = [\sprintf($messagePattern, $key)]; $rowData = [sprintf($messagePattern, $key)];
if (! $enabledOnly) { if (! $enabledOnly) {
$rowData[] = \sprintf($messagePattern, $this->getEnabledSymbol($row)); $rowData[] = sprintf($messagePattern, $this->getEnabledSymbol($row));
} }
$rowData[] = $expiration !== null ? $expiration->toAtomString() : '-'; $rowData[] = $expiration !== null ? $expiration->toAtomString() : '-';
$rows[] = $rowData; $rows[] = $rowData;
} }
$io->table(\array_filter([ $io->table(array_filter([
$this->translator->translate('Key'), $this->translator->translate('Key'),
! $enabledOnly ? $this->translator->translate('Is enabled') : null, ! $enabledOnly ? $this->translator->translate('Is enabled') : null,
$this->translator->translate('Expiration date'), $this->translator->translate('Expiration date'),

View File

@ -9,10 +9,12 @@ use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Style\SymfonyStyle;
use Zend\I18n\Translator\TranslatorInterface; use Zend\I18n\Translator\TranslatorInterface;
use function sprintf;
use function str_shuffle;
class GenerateCharsetCommand extends Command class GenerateCharsetCommand extends Command
{ {
const NAME = 'config:generate-charset'; public const NAME = 'config:generate-charset';
/** /**
* @var TranslatorInterface * @var TranslatorInterface
@ -25,20 +27,20 @@ class GenerateCharsetCommand extends Command
parent::__construct(); parent::__construct();
} }
public function configure() protected function configure(): void
{ {
$this->setName(self::NAME) $this->setName(self::NAME)
->setDescription(\sprintf($this->translator->translate( ->setDescription(sprintf($this->translator->translate(
'Generates a character set sample just by shuffling the default one, "%s". ' 'Generates a character set sample just by shuffling the default one, "%s". '
. 'Then it can be set in the SHORTCODE_CHARS environment variable' . 'Then it can be set in the SHORTCODE_CHARS environment variable'
), UrlShortener::DEFAULT_CHARS)); ), UrlShortener::DEFAULT_CHARS));
} }
public function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$charSet = str_shuffle(UrlShortener::DEFAULT_CHARS); $charSet = str_shuffle(UrlShortener::DEFAULT_CHARS);
(new SymfonyStyle($input, $output))->success( (new SymfonyStyle($input, $output))->success(
\sprintf($this->translator->translate('Character set: "%s"'), $charSet) sprintf($this->translator->translate('Character set: "%s"'), $charSet)
); );
} }
} }

View File

@ -9,12 +9,13 @@ use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Style\SymfonyStyle;
use Zend\I18n\Translator\TranslatorInterface; use Zend\I18n\Translator\TranslatorInterface;
use function sprintf;
class GenerateSecretCommand extends Command class GenerateSecretCommand extends Command
{ {
use StringUtilsTrait; use StringUtilsTrait;
const NAME = 'config:generate-secret'; public const NAME = 'config:generate-secret';
/** /**
* @var TranslatorInterface * @var TranslatorInterface
@ -27,7 +28,7 @@ class GenerateSecretCommand extends Command
parent::__construct(); parent::__construct();
} }
public function configure() protected function configure(): void
{ {
$this->setName(self::NAME) $this->setName(self::NAME)
->setDescription($this->translator->translate( ->setDescription($this->translator->translate(
@ -35,7 +36,7 @@ class GenerateSecretCommand extends Command
)); ));
} }
public function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$secret = $this->generateRandomString(32); $secret = $this->generateRandomString(32);
(new SymfonyStyle($input, $output))->success( (new SymfonyStyle($input, $output))->success(

View File

@ -13,7 +13,7 @@ use Zend\I18n\Translator\TranslatorInterface;
class CreateTagCommand extends Command class CreateTagCommand extends Command
{ {
const NAME = 'tag:create'; public const NAME = 'tag:create';
/** /**
* @var TagServiceInterface * @var TagServiceInterface
@ -31,7 +31,7 @@ class CreateTagCommand extends Command
parent::__construct(); parent::__construct();
} }
protected function configure() protected function configure(): void
{ {
$this $this
->setName(self::NAME) ->setName(self::NAME)
@ -44,7 +44,7 @@ class CreateTagCommand extends Command
); );
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$io = new SymfonyStyle($input, $output); $io = new SymfonyStyle($input, $output);
$tagNames = $input->getOption('name'); $tagNames = $input->getOption('name');

View File

@ -13,7 +13,7 @@ use Zend\I18n\Translator\TranslatorInterface;
class DeleteTagsCommand extends Command class DeleteTagsCommand extends Command
{ {
const NAME = 'tag:delete'; public const NAME = 'tag:delete';
/** /**
* @var TagServiceInterface * @var TagServiceInterface
@ -31,7 +31,7 @@ class DeleteTagsCommand extends Command
parent::__construct(); parent::__construct();
} }
protected function configure() protected function configure(): void
{ {
$this $this
->setName(self::NAME) ->setName(self::NAME)
@ -44,7 +44,7 @@ class DeleteTagsCommand extends Command
); );
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$io = new SymfonyStyle($input, $output); $io = new SymfonyStyle($input, $output);
$tagNames = $input->getOption('name'); $tagNames = $input->getOption('name');

View File

@ -10,10 +10,11 @@ use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Style\SymfonyStyle;
use Zend\I18n\Translator\TranslatorInterface; use Zend\I18n\Translator\TranslatorInterface;
use function array_map;
class ListTagsCommand extends Command class ListTagsCommand extends Command
{ {
const NAME = 'tag:list'; public const NAME = 'tag:list';
/** /**
* @var TagServiceInterface * @var TagServiceInterface
@ -31,14 +32,14 @@ class ListTagsCommand extends Command
parent::__construct(); parent::__construct();
} }
protected function configure() protected function configure(): void
{ {
$this $this
->setName(self::NAME) ->setName(self::NAME)
->setDescription($this->translator->translate('Lists existing tags.')); ->setDescription($this->translator->translate('Lists existing tags.'));
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$io = new SymfonyStyle($input, $output); $io = new SymfonyStyle($input, $output);
$io->table([$this->translator->translate('Name')], $this->getTagsRows()); $io->table([$this->translator->translate('Name')], $this->getTagsRows());
@ -51,7 +52,7 @@ class ListTagsCommand extends Command
return [[$this->translator->translate('No tags yet')]]; return [[$this->translator->translate('No tags yet')]];
} }
return \array_map(function (Tag $tag) { return array_map(function (Tag $tag) {
return [$tag->getName()]; return [$tag->getName()];
}, $tags); }, $tags);
} }

View File

@ -11,10 +11,11 @@ use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Style\SymfonyStyle;
use Zend\I18n\Translator\TranslatorInterface; use Zend\I18n\Translator\TranslatorInterface;
use function sprintf;
class RenameTagCommand extends Command class RenameTagCommand extends Command
{ {
const NAME = 'tag:rename'; public const NAME = 'tag:rename';
/** /**
* @var TagServiceInterface * @var TagServiceInterface
@ -32,7 +33,7 @@ class RenameTagCommand extends Command
parent::__construct(); parent::__construct();
} }
protected function configure() protected function configure(): void
{ {
$this $this
->setName(self::NAME) ->setName(self::NAME)
@ -41,7 +42,7 @@ class RenameTagCommand extends Command
->addArgument('newName', InputArgument::REQUIRED, $this->translator->translate('New name of the tag.')); ->addArgument('newName', InputArgument::REQUIRED, $this->translator->translate('New name of the tag.'));
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$io = new SymfonyStyle($input, $output); $io = new SymfonyStyle($input, $output);
$oldName = $input->getArgument('oldName'); $oldName = $input->getArgument('oldName');
@ -51,7 +52,7 @@ class RenameTagCommand extends Command
$this->tagService->renameTag($oldName, $newName); $this->tagService->renameTag($oldName, $newName);
$io->success($this->translator->translate('Tag properly renamed.')); $io->success($this->translator->translate('Tag properly renamed.'));
} catch (EntityDoesNotExistException $e) { } catch (EntityDoesNotExistException $e) {
$io->error(\sprintf($this->translator->translate('A tag with name "%s" was not found'), $oldName)); $io->error(sprintf($this->translator->translate('A tag with name "%s" was not found'), $oldName));
} }
} }
} }

View File

@ -13,6 +13,8 @@ use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Style\SymfonyStyle;
use Zend\I18n\Translator\TranslatorInterface; use Zend\I18n\Translator\TranslatorInterface;
use function sleep;
use function sprintf;
class ProcessVisitsCommand extends Command class ProcessVisitsCommand extends Command
{ {
@ -42,7 +44,7 @@ class ProcessVisitsCommand extends Command
parent::__construct(null); parent::__construct(null);
} }
public function configure() protected function configure(): void
{ {
$this->setName(self::NAME) $this->setName(self::NAME)
->setDescription( ->setDescription(
@ -50,7 +52,7 @@ class ProcessVisitsCommand extends Command
); );
} }
public function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output): void
{ {
$io = new SymfonyStyle($input, $output); $io = new SymfonyStyle($input, $output);
$visits = $this->visitService->getUnlocatedVisits(); $visits = $this->visitService->getUnlocatedVisits();
@ -58,10 +60,10 @@ class ProcessVisitsCommand extends Command
$count = 0; $count = 0;
foreach ($visits as $visit) { foreach ($visits as $visit) {
$ipAddr = $visit->getRemoteAddr(); $ipAddr = $visit->getRemoteAddr();
$io->write(\sprintf('%s <info>%s</info>', $this->translator->translate('Processing IP'), $ipAddr)); $io->write(sprintf('%s <info>%s</info>', $this->translator->translate('Processing IP'), $ipAddr));
if ($ipAddr === IpAddress::LOCALHOST) { if ($ipAddr === IpAddress::LOCALHOST) {
$io->writeln( $io->writeln(
\sprintf(' (<comment>%s</comment>)', $this->translator->translate('Ignored localhost address')) sprintf(' (<comment>%s</comment>)', $this->translator->translate('Ignored localhost address'))
); );
continue; continue;
} }
@ -75,13 +77,13 @@ class ProcessVisitsCommand extends Command
$visit->setVisitLocation($location); $visit->setVisitLocation($location);
$this->visitService->saveVisit($visit); $this->visitService->saveVisit($visit);
$io->writeln(\sprintf( $io->writeln(sprintf(
' (' . $this->translator->translate('Address located at "%s"') . ')', ' (' . $this->translator->translate('Address located at "%s"') . ')',
$location->getCityName() $location->getCityName()
)); ));
} catch (WrongIpException $e) { } catch (WrongIpException $e) {
$io->writeln( $io->writeln(
\sprintf(' <error>%s</error>', $this->translator->translate('An error occurred while locating IP')) sprintf(' <error>%s</error>', $this->translator->translate('An error occurred while locating IP'))
); );
if ($io->isVerbose()) { if ($io->isVerbose()) {
$this->getApplication()->renderException($e, $output); $this->getApplication()->renderException($e, $output);
@ -91,11 +93,11 @@ class ProcessVisitsCommand extends Command
if ($count === $this->ipLocationResolver->getApiLimit()) { if ($count === $this->ipLocationResolver->getApiLimit()) {
$count = 0; $count = 0;
$seconds = $this->ipLocationResolver->getApiInterval(); $seconds = $this->ipLocationResolver->getApiInterval();
$io->note(\sprintf( $io->note(sprintf(
$this->translator->translate('IP location resolver limit reached. Waiting %s seconds...'), $this->translator->translate('IP location resolver limit reached. Waiting %s seconds...'),
$seconds $seconds
)); ));
\sleep($seconds); sleep($seconds);
} }
} }