Completed
Pull Request — master (#39)
by Daniel
04:05
created

SchedulerServiceProvider::createCronExpressionFactory()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jellyfish\Scheduler;
6
7
use Jellyfish\Console\ConsoleConstants;
8
use Jellyfish\Console\ConsoleFacadeInterface;
9
use Jellyfish\Log\LogConstants;
10
use Jellyfish\Process\ProcessConstants;
11
use Jellyfish\Scheduler\Command\RunSchedulerCommand;
12
use Pimple\Container;
13
use Pimple\ServiceProviderInterface;
14
15
class SchedulerServiceProvider implements ServiceProviderInterface
16
{
17
    /**
18
     * @param \Pimple\Container $pimple
19
     *
20
     * @return void
21
     */
22
    public function register(Container $pimple): void
23
    {
24
        $this->registerSchedulerFacade($pimple)
25
            ->registerCommands($pimple);
26
    }
27
28
    /**
29
     * @param \Pimple\Container $container
30
     *
31
     * @return \Jellyfish\Scheduler\SchedulerServiceProvider
32
     */
33
    protected function registerSchedulerFacade(Container $container): SchedulerServiceProvider
34
    {
35
        $container->offsetSet(SchedulerConstants::FACADE, static function (Container $container) {
36
            $schedulerFactory = new SchedulerFactory($container->offsetGet(ProcessConstants::FACADE));
37
38
            return new SchedulerFacade($schedulerFactory);
39
        });
40
41
        return $this;
42
    }
43
44
    /**
45
     * @param \Pimple\Container $container
46
     *
47
     * @return \Jellyfish\Scheduler\SchedulerServiceProvider
48
     */
49
    protected function registerCommands(Container $container): SchedulerServiceProvider
50
    {
51
        $container->extend(
52
            ConsoleConstants::FACADE,
53
            static function (ConsoleFacadeInterface $consoleFacade, Container $container) {
54
                $consoleFacade->addCommand(
55
                    new RunSchedulerCommand(
56
                        $container->offsetGet(SchedulerConstants::FACADE),
57
                        $container->offsetGet('lock_factory'),
58
                        $container->offsetGet(LogConstants::FACADE)
59
                    )
60
                );
61
62
                return $consoleFacade;
63
            }
64
        );
65
66
        return $this;
67
    }
68
}
69