. */ namespace vierbergenlars\AuthserverStatsBundle\Command; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use vierbergenlars\AuthserverStatsBundle\Event\StatsEvent; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Helper\Table; class DumpStatsCommand extends Command { protected function configure() { $this->setName('stats:dump') ->addOption('module', 'm', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Modules to fetch statistics for') ->addOption('raw', null, InputOption::VALUE_NONE, 'Output raw statistics list'); } protected function execute(InputInterface $input, OutputInterface $output) { $eventDispatcher = $this->getApplication() ->getKernel() ->getContainer() ->get('event_dispatcher'); /* @var $eventDispatcher Symfony\Component\EventDispatcher\EventDispatcher */ $event = new StatsEvent($input->getOption('module')); $eventDispatcher->dispatch(StatsEvent::class, $event); $table = new Table($output); $table->setHeaders([ 'Statistic', 'Value' ]); foreach ($event->getStatistics() as $name => $value) { if ($input->getOption('raw')) { $output->writeln($name . "\t" . $value, OutputInterface::OUTPUT_RAW); } $table->addRow([ $name, $value ]); } if (!$input->getOption('raw')) { $table->render(); } } }