Completed
Push — master ( dc9e69...c2d99a )
by Adam
03:24 queued 41s
created
Labels
Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
4
namespace Genesis;
5
6
7
use Genesis\Commands;
8
use Genesis\Config;
9
10
/**
11
 * @author Adam Bisek <[email protected]>
12
 */
13
class Build implements IBuild
14
{
15
16
	protected $container;
17
18
	protected $arguments;
19
20
21
	public function __construct(Config\Container $container, array $arguments = NULL)
22
	{
23
		$this->container = $container;
24
		$this->arguments = $arguments;
25
	}
26
27
28
	public function setup()
29
	{
30
	}
31
32
33
	public function runDefault()
34
	{
35
		$helpCommand = new Commands\Help;
36
		foreach ($this->detectAvailableTasks() as $section => $tasks) {
37
			if(!$helpCommand->hasSection($section)){
38
				$helpCommand->addSection($section);
39
			}
40
			$helpCommand->setSectionTasks($section, $tasks);
41
		}
42
		$helpCommand->execute();
43
	}
44
45
46
	protected function detectAvailableTasks()
47
	{
48
		$tasks = [];
49
		$classReflection = new \ReflectionClass($this);
50
		foreach ($classReflection->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
51
			if (preg_match('#^run(.*)#', $method->getName(), $match)) {
0 ignored issues
show
Consider using $method->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
52
				$doc = $method->getDocComment();
53
				$section = NULL;
54
				if(preg_match('#@section ?([^\s]*)\s#s', $doc, $m)){
55
					$section = trim($m[1]);
56
				}
57
				$description = NULL;
58
				if(preg_match('#([^@][a-zA-Z0-9]+)+#', $doc, $m)){
59
					$description = trim($m[0]);
60
				}
61
				$tasks[$section][lcfirst($match[1])] = $description != '' ? $description : NULL;
62
			}
63
		}
64
		return $tasks;
65
	}
66
67
68
	protected function error($message)
69
	{
70
		throw new \ErrorException($message);
71
	}
72
73
74
	protected function logSection($message)
75
	{
76
		echo Cli::getColoredString("=> " . $message, 'green') . PHP_EOL;
77
	}
78
79
80
	protected function log($message)
81
	{
82
		echo $message . PHP_EOL;
83
	}
84
85
}