Completed
Push — 0.4 ( b869dd...75a03b )
by jean
10s
created

configureOptionResolver()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 14
ccs 7
cts 7
cp 1
crap 1
rs 9.7998
c 0
b 0
f 0
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