RegisterMetricsGeneratorPass::process()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3.009

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 9
c 1
b 0
f 0
dl 0
loc 15
ccs 9
cts 10
cp 0.9
rs 9.9666
cc 3
nc 3
nop 1
crap 3.009
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