|
<?php |
|
|
|
class StaticData |
|
{ |
|
const logs_path = "./data/"; |
|
} |
|
|
|
function get_all_branch_names() |
|
{ |
|
$branches = array(); |
|
$dir_hdl = opendir(StaticData::logs_path); |
|
while (($file = readdir($dir_hdl)) !== false) { |
|
if (($pos = strpos($file, ".revlist")) > 0) { |
|
array_push($branches, substr($file, 0, $pos)); |
|
} |
|
} |
|
return $branches; |
|
} |
|
|
|
class Branch |
|
{ |
|
public function __construct($name) |
|
{ |
|
$this->name = $name; |
|
$this->create_revlist_hdl(); |
|
} |
|
|
|
public function get_next_commit() |
|
{ |
|
return new Commit( chop( fgets($this->revlist_hdl) ) ); |
|
} |
|
|
|
public function set_line($line) |
|
{ |
|
$this->reset(); |
|
$index = 0; |
|
while ($this->revlist_hdl && $index < $line) { |
|
fgets($this->revlist_hdl); |
|
$index++; |
|
} |
|
} |
|
|
|
public function reset() |
|
{ |
|
fclose($this->revlist_hdl); |
|
$this->create_revlist_hdl(); |
|
} |
|
|
|
private function create_revlist_hdl() |
|
{ |
|
$this->revlist_hdl = fopen(StaticData::logs_path . "/" . $this->name . ".revlist", "r"); |
|
} |
|
|
|
private $name; |
|
private $revlist_hdl; |
|
} |
|
|
|
class Commit |
|
{ |
|
public function __construct($name) |
|
{ |
|
$this->name = $name; |
|
} |
|
|
|
public function read_log() |
|
{ |
|
if (! $this->was_tested()) { |
|
return; |
|
} |
|
|
|
$log_hdl = fopen(StaticData::logs_path . "/" . substr($this->name, 0, 1) . "/" . $this->name . ".log", "r"); |
|
while (($line = fgets($log_hdl)) !== false) { |
|
if (preg_match('/tests passed/', $line)) { |
|
$this->passed_percent = substr($line, 0, strpos('%', $line)); |
|
} |
|
else if (preg_match('/INVESTIGATE THESE FAILED TESTS/', $line)) { |
|
$this->failed_tests = substr($line, 39); |
|
} |
|
else if (! $this->is_ok() && preg_match('/## Status:/', $line)) { |
|
$this->failed_at = substr($line, 16); |
|
} |
|
} |
|
} |
|
|
|
public function read_info() |
|
{ |
|
$info_hdl = fopen(StaticData::logs_path . "/" . substr($this->name, 0, 1) . "/" . $this->name . ".info", "r"); |
|
while (($line = fgets($info_hdl)) !== false) { |
|
if (preg_match('/Author:/', $line)) { |
|
$this->author = substr("$line", 7); |
|
} |
|
else if (preg_match('/Date:/', $line)) { |
|
$this->timestamp = substr("$line", 12); |
|
break; |
|
} |
|
} |
|
while (($line = fgets($info_hdl)) !== false) { |
|
$this->message .= chop($line); |
|
} |
|
$this->message = preg_replace('/\s+/', ' ', $this->message); |
|
} |
|
|
|
public function was_tested() |
|
{ |
|
return file_exists(StaticData::logs_path . "/" . substr($this->name, 0, 1) . "/" . $this->name . ".log"); |
|
} |
|
|
|
public function is_ok() |
|
{ |
|
if (! $this->was_tested()) { |
|
return false; |
|
} else { |
|
return file_exists(StaticData::logs_path . "/" . substr($this->name, 0, 1) . "/" . $this->name . ".OK"); |
|
} |
|
} |
|
|
|
public function get_status() |
|
{ |
|
return $this->was_tested() |
|
? ($this->is_ok() ? "OK" : "Failed: " . $this->get_failed_at()) : "Not tested"; |
|
} |
|
|
|
public function get_passed_percent() |
|
{ |
|
return $this->passed_percent; |
|
} |
|
|
|
public function get_failed_tests() |
|
{ |
|
return $this->failed_tests; |
|
} |
|
|
|
public function get_failed_at() |
|
{ |
|
return $this->failed_at; |
|
} |
|
|
|
public function get_message() |
|
{ |
|
return $this->message; |
|
} |
|
|
|
public function get_author() |
|
{ |
|
return $this->author; |
|
} |
|
|
|
public function get_timestamp() |
|
{ |
|
return $this->timestamp; |
|
} |
|
|
|
public function get_name() |
|
{ |
|
return $this->name; |
|
} |
|
|
|
public function get_log_file() |
|
{ |
|
return "show_commit.php?commit_id=$this->name&type=log"; |
|
} |
|
|
|
public function get_info_file() |
|
{ |
|
return "show_commit.php?commit_id=$this->name&type=info"; |
|
} |
|
|
|
private function open_log() |
|
{ |
|
return fopen($this->get_log_file()); |
|
} |
|
|
|
private function open_info() |
|
{ |
|
return fopen($this->get_info_file()); |
|
} |
|
|
|
private $name; |
|
private $passed_percent; |
|
private $failed_tests; |
|
private $failed_at; |
|
private $message; |
|
private $author; |
|
private $timestamp; |
|
|
|
} |
|
|
|
?> |
|
|