From c4afce84de7482dde5c29f6cacdd14196672433c Mon Sep 17 00:00:00 2001 From: Romain d'Alverny Date: Fri, 14 Jan 2011 15:49:38 +0000 Subject: show package build time --- index.php | 48 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) (limited to 'index.php') diff --git a/index.php b/index.php index ac646d9..9dd9efe 100644 --- a/index.php +++ b/index.php @@ -46,9 +46,12 @@ shell_exec('grep -v mga src.txt > src.mdv.txt'); chdir($upload_dir); -$all_files = shell_exec("find \( -name '*.rpm' -o -name '*.src.rpm.info' -o -name '*.youri' -o -name '*.lock' -o -name '*.done' \) -ctime -$max_modified"); - -preg_match_all("!^\./(\w+)/((\w+)/(\w+)/(\w+)/(\d+)\.(\w+)\.(\w+)\.(\d+))_?(.+)(\.src\.rpm(?:\.info)?|\.youri|\.lock|\.done)$!m", $all_files, $matches, PREG_SET_ORDER); +$all_files = shell_exec("find \( -name '*.rpm' -o -name '*.src.rpm.info' -o -name '*.youri' -o -name '*.lock' -o -name '*.done' \) ! -ctime $max_modified -printf \"%p\t%T@\""); +$re = "!^\./(\w+)/((\w+)/(\w+)/(\w+)/(\d+)\.(\w+)\.(\w+)\.(\d+))_?(.+)(\.src\.rpm(?:\.info)?|\.youri|\.lock|\.done)\s+(\d+\.\d+)$!m"; +$r = preg_match_all($re, + $all_files, + $matches, + PREG_SET_ORDER); $pkgs = array(); foreach ($matches as $val) { @@ -85,6 +88,10 @@ foreach ($matches as $val) { } else if ($ext == '.lock') { // parse build bot from $data $pkgs[$key]['status']['build'] = 1; + } else if ($ext == '.done') { + $pkgs[$key]['buildtime']['start'] = strtotime($val[6]); + $pkgs[$key]['buildtime']['end'] = round($val[12]); + $pkgs[$key]['buildtime']['diff'] = $pkgs[$key]['buildtime']['end'] - $pkgs[$key]['buildtime']['start']; } } // sort by key in reverse order to have more recent pkgs first @@ -126,26 +133,38 @@ function plural($num) { } /** - * @param string $key + * Return human-readable time difference: + * - against $key (YmdHis expected format) + * - using only $diff (takes precedence over $key if provided) + * + * @param string $key past date to diff against from now + * @param integer $diff time difference in seconds * * @return string */ -function key2date($key) { - global $tz; - $date = DateTime::createFromFormat("YmdHis", $key+0, $tz); - $diff = time() - $date->getTimestamp(); +function key2date($key, $diff = null) { + global $tz; + + if (is_null($diff) || $diff <= 0) { + $date = DateTime::createFromFormat("YmdHis", $key+0, $tz); + if ($date <= 0) + return null; + + $diff = time() - $date->getTimestamp(); + } if ($diff<60) - return $diff . " second" . plural($diff) . " ago"; + return $diff . " second" . plural($diff); $diff = round($diff/60); if ($diff<60) - return $diff . " minute" . plural($diff) . " ago"; + return $diff . " minute" . plural($diff); $diff = round($diff/60); if ($diff<24) - return $diff . " hour" . plural($diff) . " ago"; + return $diff . " hour" . plural($diff); $diff = round($diff/24); - return $diff . " day" . plural($diff) . " ago"; + return $diff . " day" . plural($diff); } + ?> @@ -256,7 +275,7 @@ if ($total > 0) { $s .= sprintf($tmpl, $p['type'], - key2date($key), + key2date($key) . ' ago', $p['user'], $p['user'], $p['package'], $p['version'], @@ -275,6 +294,9 @@ if ($total > 0) { sprintf('%s', $typelink, $p['type']) : $p['type']; + $s .= ''; + if ($p['type'] == 'uploaded') + $s .= duration_to_diff($p['buildtime']['diff']); $s .= ''; //$s .= '' . sprintf($badges[$p['type']], $p['user']) . ''; $s .= ''; -- cgit v1.2.1