Completed
Pull Request — master (#34)
by jean
03:05
created

FilesystemEventWaitingStep   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 31
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A configureOptionResolver() 0 14 1
A execute() 0 13 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Darkilliant\ProcessBundle\Step;
6
7
use Darkilliant\ProcessBundle\State\ProcessState;
8
use Symfony\Component\OptionsResolver\OptionsResolver;
9
10
class FilesystemEventWaitingStep extends AbstractConfigurableStep
11
{
12 1
    public function configureOptionResolver(OptionsResolver $resolver): OptionsResolver
13
    {
14 1
        $resolver->setRequired(['folder', 'event_name', 'timeout', 'recursive']);
15 1
        $resolver->setDefault('timeout', 0);
16 1
        $resolver->setDefault('recursive', false);
17
18 1
        $resolver->setAllowedValues('event_name', [
19 1
            'access', 'modify', 'attrib', 'close_write',
20
            'close_nowrite', 'close', 'open', 'moved_to',
21
            'moved_from', 'move', 'create', 'delete',
22
            'delete_self', 'unmount',
23
        ]);
24
25 1
        return parent::configureOptionResolver($resolver);
26
    }
27
28 1
    public function execute(ProcessState $state)
29
    {
30 1
        $state->info('filesystem -> wait event {event_name} on folder {folder}', $state->getOptions());
31
32 1
        $command = sprintf(
33 1
            'inotifywait %s -q --timeout=%s -e %s %s',
34 1
            $state->getOptions()['recursive'] ? '-r' : '',
35 1
            $state->getOptions()['timeout'],
36 1
            $state->getOptions()['event_name'],
37 1
            $state->getOptions()['folder']
38
        );
39
40 1
        exec($command);
41 1
    }
42
}
43