RegisterMetricsGeneratorPass   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 17
Duplicated Lines 0 %

Test Coverage

Coverage 90%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 10
c 1
b 0
f 0
dl 0
loc 17
ccs 9
cts 10
cp 0.9
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 15 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Artprima\PrometheusMetricsBundle\DependencyInjection\Compiler;
6
7
use Artprima\PrometheusMetricsBundle\Metrics\MetricsGeneratorRegistry;
8
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\Reference;
11
12
/**
13
 * RegisterMetricsGeneratorPass is a compilation pass that registers all metrics classes taged as
14
 * prometheus_metrics_bundle.metrics_generator.
15
 */
16
class RegisterMetricsGeneratorPass implements CompilerPassInterface
17
{
18 6
    public function process(ContainerBuilder $container)
19
    {
20 6
        if (false === $container->hasDefinition(MetricsGeneratorRegistry::class)) {
21
            return;
22
        }
23
24 6
        $definition = $container->getDefinition(MetricsGeneratorRegistry::class);
25
26 6
        foreach ($container->findTaggedServiceIds('prometheus_metrics_bundle.metrics_generator') as $id => $tags) {
27 6
            $generator = $container->getDefinition($id);
28 6
            $generator->addMethodCall('init', [
29 6
                $container->getParameter('prometheus_metrics_bundle.namespace'),
30 6
                new Reference('prometheus_metrics_bundle.collector_registry'),
31
            ]);
32 6
            $definition->addMethodCall('registerMetricsGenerator', [new Reference($id)]);
33
        }
34 6
    }
35
}
36