. */ 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; use Symfony\Component\Process\PhpExecutableFinder; class GenerateMuninCommand extends Command { protected function configure() { $this->setName('stats:generate:munin-plugin') ->addOption('module', 'm', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Modules to generate munin plugin for') ->addOption('exclude', 'x', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Modules to exclude from munin graphing') ->addOption('static-config', 's', InputOption::VALUE_NONE, 'Include a statically generated munin configuration'); } 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); $modules = array_merge(array_diff($event->getModules(), $input->getOption('exclude')), $input->getOption('module')); $output->writeln('#!/bin/sh'); if ($input->getOption('static-config')) { $output->writeln([ 'case $1 in', 'config)', 'cat <<\'EOM\'' ]); foreach ($modules as $module) { $output->writeln('multigraph authserver_' . $module, OutputInterface::OUTPUT_RAW); $muninConfig = $event->getMuninConfig($module); foreach ($muninConfig as $key => $value) { $output->writeln($key . ' ' . $value, OutputInterface::OUTPUT_RAW); } } $output->writeln([ 'EOM', 'exit 0;;', 'esac' ]); } $modulesParameters = array_map(function ($module) { return '-m ' . $module; }, $modules); $phpFinder = new PhpExecutableFinder(); $kernel = $this->getApplication()->getKernel(); /* @var $kernel \AppKernel */ $output->writeln(sprintf('%s %s stats:munin "$1" -e %s %s', $phpFinder->find(), $kernel->getRootDir() . '/console', $kernel->getEnvironment(), implode(' ', $modulesParameters))); } }