Skip to content

Commit

Permalink
Updated the style of the event commands
Browse files Browse the repository at this point in the history
  • Loading branch information
javiereguiluz authored and fabpot committed Oct 2, 2015
1 parent 112c66c commit 6633cac
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 64 deletions.
Expand Up @@ -16,6 +16,7 @@
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;

/**
Expand Down Expand Up @@ -58,31 +59,24 @@ protected function configure()
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$output = new SymfonyStyle($input, $output);
$dispatcher = $this->getEventDispatcher();

$options = array();
if ($event = $input->getArgument('event')) {
if (!$dispatcher->hasListeners($event)) {
$formatter = $this->getHelperSet()->get('formatter');

$formattedBlock = $formatter->formatBlock(
sprintf('[NOTE] The event "%s" does not have any registered listeners.', $event),
'fg=yellow',
true
);

$output->writeln($formattedBlock);
$output->warning(sprintf('The event "%s" does not have any registered listeners.', $event));

return;
}

$options = array('event' => $event);
} else {
$options = array();
}

$helper = new DescriptorHelper();
$options['format'] = $input->getOption('format');
$options['raw_text'] = $input->getOption('raw');
$options['output'] = $output;
$helper->describe($output, $dispatcher, $options);
}

Expand Down
Expand Up @@ -12,6 +12,7 @@
namespace Symfony\Bundle\FrameworkBundle\Console\Descriptor;

use Symfony\Component\Console\Helper\Table;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\DependencyInjection\Alias;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
Expand Down Expand Up @@ -349,42 +350,23 @@ protected function describeEventDispatcherListeners(EventDispatcherInterface $ev
{
$event = array_key_exists('event', $options) ? $options['event'] : null;

$label = 'Registered listeners';
if (null !== $event) {
$label .= sprintf(' for event <info>%s</info>', $event);
$title = sprintf('Registered Listeners for "%s" Event', $event);
} else {
$label .= ' by event';
$title = 'Registered Listeners Grouped by Event';
}

$this->writeText($this->formatSection('event_dispatcher', $label)."\n", $options);
$options['output']->title($title);

$registeredListeners = $eventDispatcher->getListeners($event);
$registeredListeners = $eventDispatcher->getListeners($event, true);

if (null !== $event) {
$this->writeText("\n");
$table = new Table($this->getOutput());
$table->getStyle()->setCellHeaderFormat('%s');
$table->setHeaders(array('Order', 'Callable'));

foreach ($registeredListeners as $order => $listener) {
$table->addRow(array(sprintf('#%d', $order + 1), $this->formatCallable($listener)));
}

$table->render();
$this->renderEventListenerTable($registeredListeners, $options['output']);
} else {
ksort($registeredListeners);
foreach ($registeredListeners as $eventListened => $eventListeners) {
$this->writeText(sprintf("\n<info>[Event]</info> %s\n", $eventListened), $options);

$table = new Table($this->getOutput());
$table->getStyle()->setCellHeaderFormat('%s');
$table->setHeaders(array('Order', 'Callable'));

foreach ($eventListeners as $order => $eventListener) {
$table->addRow(array(sprintf('#%d', $order + 1), $this->formatCallable($eventListener)));
}

$table->render();
$options['output']->section(sprintf('"%s" event', $eventListened));
$this->renderEventListenerTable($eventListeners, $options['output']);
}
}
}
Expand All @@ -400,21 +382,20 @@ protected function describeCallable($callable, array $options = array())
/**
* @param array $array
*/
private function renderEventListenerTable(array $eventListeners)
private function renderEventListenerTable(array $eventListeners, SymfonyStyle $renderer)
{
$table = new Table($this->getOutput());
$table->getStyle()->setCellHeaderFormat('%s');
$table->setHeaders(array('Order', 'Callable', 'Priority'));
$tableHeaders = array('Order', 'Callable', 'Priority');
$tableRows = array();

krsort($eventListeners);
$order = 1;
foreach ($eventListeners as $priority => $listeners) {
foreach ($listeners as $listener) {
$table->addRow(array(sprintf('#%d', $order++), $this->formatCallable($listener), $priority));
$tableRows[] = array(sprintf('#%d', $order++), $this->formatCallable($listener), $priority);
}
}

$table->render();
$renderer->table($tableHeaders, $tableRows);
}

/**
Expand Down
@@ -1,8 +1,9 @@
<info>[event_dispatcher]</info> Registered listeners for event <info>event1</info>
Registered Listeners for "event1" Event
=======================================

+-------+-------------------+
| Order | Callable |
+-------+-------------------+
| #1 | global_function() |
| #2 | \Closure() |
+-------+-------------------+
------- ------------------- ----------
Order Callable Priority
------- ------------------- ----------
#1 global_function() 255
#2 \Closure() -1
------- ------------------- ----------
@@ -1,16 +1,21 @@
<info>[event_dispatcher]</info> Registered listeners by event
Registered Listeners Grouped by Event
=====================================

<info>[Event]</info> event1
+-------+-------------------+
| Order | Callable |
+-------+-------------------+
| #1 | global_function() |
| #2 | \Closure() |
+-------+-------------------+
"event1" event
--------------

<info>[Event]</info> event2
+-------+-----------------------------------------------------------------------------------+
| Order | Callable |
+-------+-----------------------------------------------------------------------------------+
| #1 | Symfony\Bundle\FrameworkBundle\Tests\Console\Descriptor\CallableClass::__invoke() |
+-------+-----------------------------------------------------------------------------------+
------- ------------------- ----------
Order Callable Priority
------- ------------------- ----------
#1 global_function() 255
#2 \Closure() -1
------- ------------------- ----------

"event2" event
--------------

------- ----------------------------------------------------------------------------------- ----------
Order Callable Priority
------- ----------------------------------------------------------------------------------- ----------
#1 Symfony\Bundle\FrameworkBundle\Tests\Console\Descriptor\CallableClass::__invoke() 0
------- ----------------------------------------------------------------------------------- ----------

0 comments on commit 6633cac

Please sign in to comment.