PurgeConsumerCommand   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Test Coverage

Coverage 26.09%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 19
dl 0
loc 47
ccs 6
cts 23
cp 0.2609
rs 10
c 3
b 0
f 0
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A configure() 0 7 1
A execute() 0 25 4
A initialize() 0 2 1
1
<?php
2
3
namespace OldSound\RabbitMqBundle\Command;
4
5
use Symfony\Component\Console\Input\InputArgument;
6
use Symfony\Component\Console\Input\InputInterface;
7
use Symfony\Component\Console\Input\InputOption;
8
use Symfony\Component\Console\Output\OutputInterface;
9
use Symfony\Component\Console\Question\ConfirmationQuestion;
10
11
/**
12
 * Command to purge a queue
13
 */
14
class PurgeConsumerCommand extends ConsumerCommand
15
{
16 1
    protected function configure(): void
17
    {
18 1
        $this->addArgument('name', InputArgument::REQUIRED, 'Consumer Name')
19 1
             ->setDescription('Purge a consumer\'s queue')
20 1
             ->addOption('no-confirmation', null, InputOption::VALUE_NONE, 'Whether it must be confirmed before purging');
21
22 1
        $this->setName('rabbitmq:purge');
23 1
    }
24
25
    protected function initialize(InputInterface $input, OutputInterface $output): void
26
    {
27
        // nothing to initialize here as BaseConsumerCommand initializes on option that is not available here
28
    }
29
30
    /**
31
     * @param InputInterface $input
32
     * @param OutputInterface $output
33
     *
34
     * @return int
35
     */
36
    protected function execute(InputInterface $input, OutputInterface $output): int
37
    {
38
        $noConfirmation = (bool) $input->getOption('no-confirmation');
39
40
        if (!$noConfirmation && $input->isInteractive()) {
41
            $question = new ConfirmationQuestion(
42
                sprintf(
43
                    '<question>Are you sure you wish to purge "%s" queue? (y/n)</question>',
44
                    $input->getArgument('name')
45
                ),
46
                false
47
            );
48
49
            if (!$this->getHelper('question')->ask($input, $output, $question)) {
50
                $output->writeln('<error>Purging cancelled!</error>');
51
52
                return 1;
53
            }
54
        }
55
56
        $this->consumer = $this->getContainer()
57
            ->get(sprintf($this->getConsumerService(), $input->getArgument('name')));
58
        $this->consumer->purge($input->getArgument('name'));
0 ignored issues
show
Bug introduced by
The method purge() does not exist on null. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

58
        $this->consumer->/** @scrutinizer ignore-call */ 
59
                         purge($input->getArgument('name'));

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
59
60
        return 0;
61
    }
62
}
63