/
Programs.php
56 lines (41 loc) · 1019 Bytes
/
Programs.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
namespace Genesis\Commands\Test;
use Genesis\Commands\Command;
/**
* @author Adam Bisek <adam.bisek@gmail.com>
*/
class Programs extends Command
{
private $requiredPrograms;
/**
* @return array
*/
public function getRequiredPrograms()
{
return $this->requiredPrograms;
}
/**
* @param array $requiredPrograms
*/
public function setRequiredPrograms($requiredPrograms)
{
$this->requiredPrograms = $requiredPrograms;
}
public function execute()
{
$errors = array();
foreach ($this->requiredPrograms as $program => $howToInstallCommand) {
exec('command -v ' . escapeshellarg($program) . ' >/dev/null 2>&1', $output, $return);
if ($return !== 0) {
$errors[] = 'Required program "' . $program . '" is not installed.';
if ($howToInstallCommand) {
$errors[] = 'You can fix this by running: ' . $howToInstallCommand;
}
}
}
if (!empty($errors)) {
$this->error(implode(PHP_EOL, $errors));
}
$this->log('Required programs are installed.');
}
}