Skip to content

Commit ac7b10d

Browse files
authored
Merge pull request #474 from phpmetrics/fixes_permissions_path
Fixes issues with paths
2 parents 6e1b0d6 + dfb7250 commit ac7b10d

File tree

4 files changed

+25
-21
lines changed

4 files changed

+25
-21
lines changed

src/Hal/Application/Application.php

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Hal\Application;
44

5+
use Exception;
56
use Hal\Application\Config\ConfigException;
67
use Hal\Application\Config\Parser;
78
use Hal\Application\Config\Validator;
@@ -87,13 +88,19 @@ public function run(array $argv)
8788
(new ViolationParser($config, $output))->apply($metrics);
8889

8990
// report
90-
(new Report\Cli\Reporter($config, $output))->generate($metrics);
91-
(new Report\Cli\SearchReporter($config, $output))->generate($metrics);
92-
(new Report\Html\Reporter($config, $output))->generate($metrics);
93-
(new Report\Csv\Reporter($config, $output))->generate($metrics);
94-
(new Report\Json\Reporter($config, $output))->generate($metrics);
95-
(new Report\Json\SummaryReporter($config, $output))->generate($metrics);
96-
(new Report\Violations\Xml\Reporter($config, $output))->generate($metrics);
91+
try {
92+
(new Report\Cli\Reporter($config, $output))->generate($metrics);
93+
(new Report\Cli\SearchReporter($config, $output))->generate($metrics);
94+
(new Report\Html\Reporter($config, $output))->generate($metrics);
95+
(new Report\Csv\Reporter($config, $output))->generate($metrics);
96+
(new Report\Json\Reporter($config, $output))->generate($metrics);
97+
(new Report\Json\SummaryReporter($config, $output))->generate($metrics);
98+
(new Report\Violations\Xml\Reporter($config, $output))->generate($metrics);
99+
} catch (Exception $e) {
100+
$output->writeln(sprintf('<error>Cannot generate report: %s</error>', $e->getMessage()));
101+
$output->writeln('');
102+
exit(1);
103+
}
97104

98105
// exit status
99106
$shouldExitDueToCriticalViolationsCount = 0;

src/Hal/Application/Config/File/ConfigFileReaderJson.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class ConfigFileReaderJson implements ConfigFileReaderInterface
1111
/**
1212
* @var string
1313
*/
14-
private $filename;
14+
protected $filename;
1515

1616
/**
1717
* @param string $filename

src/Hal/Application/Config/File/ConfigFileReaderYaml.php

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,6 @@
66

77
class ConfigFileReaderYaml extends ConfigFileReaderJson implements ConfigFileReaderInterface
88
{
9-
/**
10-
* @var string
11-
*/
12-
private $filename;
13-
14-
/**
15-
* @param string $filename
16-
*/
17-
public function __construct($filename)
18-
{
19-
$this->filename = $filename;
20-
}
21-
229
/**
2310
* @param Config $config
2411
*/

src/Hal/Report/Html/Reporter.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Hal\Metric\Consolidated;
88
use Hal\Metric\Group\Group;
99
use Hal\Metric\Metrics;
10+
use RuntimeException as RuntimeExceptionAlias;
1011

1112
class Reporter
1213
{
@@ -103,6 +104,11 @@ public function generate(Metrics $metrics)
103104
if (!file_exists($logDir . '/fonts')) {
104105
mkdir($logDir . '/fonts', 0755, true);
105106
}
107+
108+
if (!is_writable($logDir)) {
109+
throw new RuntimeExceptionAlias(sprintf('Unable to write in the directory "%s"', $logDir));
110+
}
111+
106112
recurse_copy($this->templateDir . '/html_report/js', $logDir . '/js');
107113
recurse_copy($this->templateDir . '/html_report/css', $logDir . '/css');
108114
recurse_copy($this->templateDir . '/html_report/images', $logDir . '/images');
@@ -193,6 +199,10 @@ public function generate(Metrics $metrics)
193199
*/
194200
public function renderPage($source, $destination, Consolidated $consolidated, $history)
195201
{
202+
if (!is_writable(dirname($destination))) {
203+
throw new RuntimeExceptionAlias(sprintf('Unable to write in the directory "%s"', dirname($destination)));
204+
}
205+
196206
$this->sum = $sum = $consolidated->getSum();
197207
$this->avg = $avg = $consolidated->getAvg();
198208
$this->classes = $classes = $consolidated->getClasses();

0 commit comments

Comments
 (0)