Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'cruise-control/web/log_wrapper.php')
-rw-r--r--cruise-control/web/log_wrapper.php188
1 files changed, 188 insertions, 0 deletions
diff --git a/cruise-control/web/log_wrapper.php b/cruise-control/web/log_wrapper.php
new file mode 100644
index 000000000..af03db016
--- /dev/null
+++ b/cruise-control/web/log_wrapper.php
@@ -0,0 +1,188 @@
+<?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;
+
+}
+
+?>