anonymous//src/AurimasNiekisSchedulerBundle.php$0   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 5
dl 0
loc 31
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AurimasNiekis\SchedulerBundle;
6
7
use AurimasNiekis\SchedulerBundle\Console\Command\SchedulerExecuteCommand;
8
use AurimasNiekis\SchedulerBundle\Console\Command\SchedulerListCommand;
9
use AurimasNiekis\SchedulerBundle\Console\Command\SchedulerRunCommand;
10
use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
11
use Symfony\Component\DependencyInjection\ContainerBuilder;
12
use Symfony\Component\DependencyInjection\Extension\Extension;
13
use Symfony\Component\HttpKernel\Bundle\Bundle;
14
15
/**
16
 * @author  Aurimas Niekis <[email protected]>
17
 */
18
class AurimasNiekisSchedulerBundle extends Bundle
19
{
20
    public function getContainerExtension()
21
    {
22
        return new class() extends Extension {
23
            public function load(array $configs, ContainerBuilder $container): void
24
            {
25
                $container->registerForAutoconfiguration(ScheduledJobInterface::class)
26
                    ->addTag('scheduler.job');
27
28
                $container->register(Scheduler::class)
29
                    ->setArgument(0, new TaggedIteratorArgument('scheduler.job'))
30
                    ->setAutowired(true)
31
                    ->setPublic(true);
32
33
                $container->setAlias('scheduler', Scheduler::class);
34
35
                $container->register(SchedulerListCommand::class)
36
                    ->setAutowired(true)
37
                    ->addTag('console.command');
38
39
                $container->register(SchedulerExecuteCommand::class)
40
                    ->setAutowired(true)
41
                    ->addTag('console.command');
42
43
                $container->register(SchedulerRunCommand::class)
44
                    ->setAutowired(true)
45
                    ->addTag('console.command');
46
            }
47
48
            public function getAlias()
49
            {
50
                return 'scheduler';
51
            }
52
        };
53
    }
54
}
55