PannelloAmministrazioneUtils::runSymfonyCommand()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 13
ccs 8
cts 8
cp 1
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 2
crap 2
1
<?php
2
3
namespace Fi\PannelloAmministrazioneBundle\DependencyInjection;
4
5
use Symfony\Bundle\FrameworkBundle\Console\Application;
6
use Symfony\Component\Console\Output\BufferedOutput;
7
use Symfony\Component\Console\Input\ArrayInput;
8
use Symfony\Component\Process\Process;
9
use Fi\PannelloAmministrazioneBundle\DependencyInjection\ProjectPath;
10
use Fi\OsBundle\DependencyInjection\OsFunctions;
11
12
class PannelloAmministrazioneUtils
13
{
14
15
    private $container;
16
    private $apppaths;
17
18 4
    public function __construct($container)
19
    {
20 4
        $this->container = $container;
21 4
        $this->apppaths = $container->get("pannelloamministrazione.projectpath");
22 4
    }
23
24 2
    public function clearcache($env = "")
25
    {
26 2
        if (!$env) {
27 1
            $env = $this->container->get('kernel')->getEnvironment();
28
        }
29
30 2
        $phpPath = OsFunctions::getPHPExecutableFromPath();
31
32 2
        if (in_array($env, array('dev', 'test', 'localhost'))) {
33 2
            $command = $phpPath . ' ' . $this->apppaths->getConsole() . ' cache:clear '
34 2
                    . '--no-warmup --env=' . $env;
35
        } else {
36 1
            $command = $phpPath . ' ' . $this->apppaths->getConsole() . ' cache:clear '
37 1
                    . '--no-debug --no-warmup --env=' . $env;
38
39 1
            $command = $command . " && " . $phpPath . ' ' . $this->apppaths->getConsole() . ' cache:warmup '
40 1
                    . '--no-debug --env=' . $env;
41
        }
42
43 2
        return self::runCommand($command);
44
    }
45
46 3
    public static function runCommand($command)
47
    {
48
        /* @var $process \Symfony\Component\Process\Process */
49 3
        $process = new Process($command);
50 3
        $process->setTimeout(60 * 60 * 24);
51 3
        $process->run();
52
53 3
        if (!$process->isSuccessful()) {
54
            $return = array("errcode" => -1,
55
                "command" => $command,
56
                "errmsg" => 'Errore nel comando ' . $command . $process->getErrorOutput() . $process->getOutput());
57
        } else {
58 3
            $return = array("errcode" => 0,
59 3
                "command" => $command,
60 3
                "errmsg" => $process->getOutput()
61
            );
62
        }
63
64 3
        return $return;
65
    }
66
67 1
    public function runSymfonyCommand($command, array $options = array())
68
    {
69 1
        $application = new Application($this->container->get('kernel'));
70 1
        $application->setAutoExit(false);
71
72 1
        $cmdoptions = array_merge(array('command' => $command), $options);
73
74 1
        $outputbuf = new BufferedOutput();
75
        // return the output, don't use if you used NullOutput()
76 1
        $returncode = $application->run(new ArrayInput($cmdoptions), $outputbuf);
77 1
        $output = $outputbuf->fetch();
78
79 1
        return array('errcode' => ($returncode == 0 ? 0 : 1), 'command' => $cmdoptions['command'], 'message' => $output);
80
    }
81
}
82